Also:
- Improves the `lexical error` message, changing it to `unrecognized
character`, and only displaying the one character that caused the
problem.
- Adds more relevant text when showing a lexical error, which should
address #219
- Switches parser to operate over lazy `Data.Text` rather than `String`