Added support to ParseProgramUnit for kw_SUBROUTINE.
Fixed fixme. Now all ``function'' statements return values in the switch.

The reason that it makes sense to do this is that all of the function statement
implementation routines return false anyways if they are unimplemented. Thus
breaking from the switch and returning false did not add anything and would
eventually have to be replaced anyways.
Added support so ParseExternalSubprogram will call ParseFunctionSubprogram/ParseSubroutineSubprogram if we have such tokens.
Added argument std::vector<StmtResult> &Body to high level parsing functions which are missing them. Now they can actually parse something (if it was implemented of course).
Added code so that flang can parse subroutine statements.
Added a comment to ParseDeclarationConstruct that includes references to the statements in the fortran standard which we are using to guide our parser of a type-declaration-stmt.

I am going to start implementing the rest of the unsupported declaration-construct types soon and will follow said model.
Added StmtDumper for SubroutineStmt and EndSubroutineStmt and adding dumping statement for EndSubroutineStmt.