Partial changes

Add SmartMacro to handle macros smartly.

Prepare to change the configuration file of CplSpec and LibSpec following
the style of SmartMacro, where "macro" is only at top level.
Clean the FortranStatement grammar

Remove the unused rules "implicit_none", "accessibility", etc., and use
"residue" rule to represent them.
Add CodeBlock

I use CodeBlock instead of TreeNode for organizing code information.
CodeBlock is derived from TreeNode, and will be added several methods
for the following macro processing.
Move blank rule ahead

To make "get_block_covers" easy, I move blank rule ahead to match the
blank spaces from head of line to the first non-blank character.

Also change fortran_parser_tools to correctly discern code type.
Add MacroProcessor

Implement dynamic macro.