Outer parser - improving lexical expressions and adding case insensitive keywords

@dwightguth please review.
 - case insensitive Terminals. Just like strings but with single quote
 - fixing and improving lexical expressions to match SDF. Allowing users to reference other lexical expressions.
 - improved the error message when having an ambiguity between two constants.

Every time I print something in SDF, now I let the toString method to do all the work.