Added Token class, improved error handling, unit tests

- Tokens are currently stored as `wstrings`. There is now a dedicated `Token` class that also holds range information for each token so we can perform better error detection.
- For the `UnmatchedOpenBrace` error, the position of the brace in question is now reported. More improved error handling to come.
- Began adding unit tests to verify MathML output and error reporting.