Fortran: properly report scope for programs, subroutines and types

To do this we change the internal types to only use types matched by
symbols_get_current_scope().  This is a bit of a hack, but the tag
types were already questionable and simply mapped to ones the
TagManager know.

This however merges Functions and Subroutines under the same top-level
item in the symbol list.
Fortran: display components
Fortran: report interfaces
Fortran: don't generate tags for interface content
Fortran: parse Fortran 2003 enums

Allow for not-yet-standard enum naming using `:: name` syntax, see
http://docs.cray.com/books/S-3692-51/html-S-3692-51/z970507905n9123.html

Test cases contributed by Adam Hirst, thanks.
Fortran: generate fake tags for anonymous structures, interfaces and enums

This allows both to show those anonymous elements, as well as giving a
parent to their children, fixing display in the symbols tree.
Fortran: add missing `block` and `endblock` keywords
Fortran: fix handling of preprocessor directives on the first line

Fix a race initialization leading to incorrect handling of preprocessor
directives on the first input line.

Test case contributed by Adam Hirst, thanks.
Fortran: allow keywords as names

Allow keywords for names of modules, programs, types, interfaces,
structures and enums.

Test case contributed by Adam Hirst, thanks.
Fortran: add support for "len" and "kind" qualifiers

Test cases contributed by Adam Hirst, thanks.
Fortran: add a few more test cases
Merge branch 'fortran/improvements'