OmpStructureChecker has too much boilerplate code in source file.
It was not easy to figure out the seperation of clauses inside 'OmpClause' and
the ones which had a seperate node in parse-tree.h.
- Removes the boilerplate by defining a few macros.
- Makes seperation between constructs, directives and clauses(sub classes are seperated).
- Macros could have been shared between OMP and OACC, template specilizations might have been costly hence used macros.
Follows the same strategy used for AccStructureChecker.
Next patch in series to simplify OmpStructureChecker would try to simplify
boilerplates inside the functions and either create abstractions or use if
something is available inside check-directive-structure.h