Refactor CodeParser and implement Fortran template

In this commit, I would like to implement template technology for Fortran.
I first refactor CodeParser module, separate macro part into MacroParser,
and add TemplateParser for template parsing. At the same time,
the extraction of deep dependencies is moved into CodeTools, so the
dependency relation can be queried in TemplateParser.