Signal better parser errors

`parser.Parse` now returns an AST _and_ an error.