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.
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.