[OpenMP] Add initial support for omp [begin/end] assumes
The assumes directive is an OpenMP 5.1 feature that allows the user to
provide assumptions to the optimizer. Assumptions can refer to
directives (absent and contains clauses), expressions (holds
clause), or generic properties (no_openmp_routines, ext_ABCD, ...).
The assumes spelling is used for assumptions in the global scope while
assume is used for executable contexts with an associated structured
block.
This patch only implements the global spellings. While clauses with
arguments are "accepted" by the parser, they will simply be ignored for
now. The implementation lowers the assumptions directly to the
AssumptionAttr.
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D91980