This patch adds support for passing REQUIRES clauses across Fortran modules via USE statements through changes to directive resolution, the directive rewrite pass and semantics checks. .mod files are also extended to include !$omp requires directives so this information can be parsed from external modules and added to the module's symbol.
This is patch 5/5 of a series splitting D149337 to simplify review.
Depends on D158096.