This patch adds semantics checks to make sure that compilation units containing
more than one requires directive are correct, as well as making sure that
they do not come after other constructs that are affected by this directive. It
also handles the atomic_default_mem_order clause by setting it in a rewrite
step as an explicit memory order associated to all atomic operations that don't
already specify it.
The directive resolution step and the symbol details for function- and module-
like PFT nodes are extended to accomodate the addition and propagation of
information about 'requires' directives contained inside. This enables
exporting 'requires' clauses to .mod files and accessing them through 'use'
Fortran statements.
Additionally, an issue parsing this directive is fixed, which makes sure that
the source location of the requires clauses is available at the time of
performing semantic checks for the purpose of error reporting.
Frontend initialization (here and elsewhere in the file) should be with braces.