Improve errors

Some ideas to improve errors:

* Use subnodes in `error` to report parse errors
* Improve save errors so they don't look too cryptic


The attached patchset is based on #80