Introduce reader macros (extended terms)

Introduce reader macros in Reader class, which is expressed as extended terms
in the grammar layer. Extended terms are special terms which starts with a '#'
character.
Add tuple extended terms (#[...]).
Copy extended terms in the standard grammar to the alternative grammar.
Add methods for reader macros

Add methods in Reader to support reader macros.
Fix the document comments in Grammar.
Fix bugs in Grammar, add operator overloads in RuleKey

Fix bugs in Grammar (Remove and GetKey methods); GetKey is added an optional
parameter to determine the behavior when the key was not found.
Add equality / inequality operators in Grammar.RuleKey.
Merge branch 'feature/reader-macros' into develop