They are less efficient but they are giving me issues because they don't
fail. Once this is working I'll look into optimizing.
Also disable skipping comments until I figure out how to skip both
comments and space at the same time.
- Add token combinator to simplify whitespace handling.
- Simplify whiteSpace parsers.
- Add `optempty` to handle pure mempty cases. `empty /= pure mempty`.
- Use `between` combinators for brackets, braces and parens.
This also includes small adjustments to the AST.
WIP: This parser just type checks, it hasn't even been tested manually.
Check new tasks in the TODO file and the TODO comments in the code for
more gotchas.