Provide a parse tree view to solve issue #12

Add a `tryParseTree()` method to `Parser`. The code has been tested against a relatively complex project of mine. The result is satisfactory to me. You can review the test cases to see the result.
That's interesting to hear. Have you benchmarked what's the performance difference between the exception approach and tryParse()?

What gets me is that in your tryParse() implementation an exception is created too. And to my knowledge, exception construction (with the full stack trace) is the most expensive in exceptions, throwing them is cheap in comparison.