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.

Pretty printing depending on the type of string.