Major parser rewrite

* Stricter!
* Drop Scanner-style approach
* Read methods use direct access
* Better error handling and reporting