Somewhat major restructuring of ParserCombinatormodule

I've simplified the lexer tokens so all keyword and symbols is represented by two parameterized datatype constructors rather than a nullary constructor for each keyword/symbol. Now the parser does not need a function per keyword, instead you just use the function $ to create any keyword parser. For instance $"datatype" will replace dType.

I've also added support for reals. Strings aren't implemented in this yet, but I'll probably look into that soon.