fcm make: build: Fortran 2K

An initial attempt to support some Fortran 2K features. See #16.

* Recognise `iso_fortran_env` as an intrinsic module.
* Recognise `use, intrinsic ::` statements.
* Recognise `class`, `double complex` and `procedure` as types.
* Recognise new type declaration attributes.
* Recognise `abstract interface` blocks.
* Recognise `impure elemental` as a valid function or subroutine attribute.
* Recognise `submodule` blocks.

I have only added one set of test battery, mainly to test the `use, intrinsic ::` statements functionality, but it also ensures that an `abstract interface` block does not cause any problem. The `submodule` functionality cannot yet be tested because it is not yet well supported by compilers. The rest are really just configuration changes, and so should be relatively safe.