Fix tag generation for Fortran with 'forall' blocks

* Add 'forall' as a keyword
* Add a check that allows 'forall' as a secondary keyword in
  'end' statements.
tests: Add a test for forall Fortran issue

Test file from Alexander Eberspächer.
Tagmanger: recognize Fortran procedure pointers as variables

Add a keyword for procedure pointers and treat declarations such as
'procedure(subprogram_to_point_to), pointer :: my_pointer' just like
declarations of a real or integer variable.
tests: Add a test for Fortran procedure pointers

Test file from Alexander Eberspächer.
Merge Fortran fixes from Alexander Eberspächer

Closes PR#145 and PR#146 by cherry-picking their commits.