Add support for other numbers

Add support for
* hexadecimal numbers
* octal numbers
* floating point numbers with exponent
Correct haskell support for strings and characters

This commit adds correct support for Haskell characters and strings.
To me, having only one type of token for characters and strings makes
no sense in Haskell as they can be distinguished easily.
Characters start with a single quote and strings start with a double
quote. Furthermore, characters can only contain —guess what— one
character whereas strings can caintain multiple or none of them.
String can also have gaps.