`compress()` may modify input ASTs add tests for #1627 & #1640
- better inheritance of `Error` sub-classes - mark parse error against source in CLI closes #235 closes #348 closes #524 closes #1356 closes #1405