Test programmatic error message setting
Add ErrorMessage annotation, generator

Not plugged in yet.
ParserTransformer: add the new ErrorMessageGenerator processor, test it
New DefaultParseRunner

This parse runner, unlike a basic parse runner, collects error messages from
rules.

If the rule does not have a custom error message, "parse error" is returned
instead.
MatchHandler: generify the interface itself, not .match()
Add tests for DefaultParseRunner

Now confirmed that error messages make their way into reports.
DefaultParseRunner: POC for debugging

Goal: replace TracingParseRunner etc.
Clear parse errors on successful match; not ideal

Ideally: another error reporting class...
MatcherPosition: fix hashCode()

.equals() uses reference comparison for matchers; .hashCode() did not. Fix that.
DefaultParseRunner: change default message
Try and improve debugging output