Parse forest reduction as operation

This implements `parseForest` as a recursively destructuring method over combinators implemented in `HMRCombinator` instead of bit by bit in each of the subclasses.

This is an inversion of the typical structure of OO polymorphism, but which still allows for overrides by subclasses (with some caveats). Net result: [the `parseForest` logic](https://github.com/robrix/Hammer/pull/95/files#diff-d7785260560de556fe675ba57835fa80R124) is collected in one place, in about a screen of code (including my comment on the PR there), instead of being distributed around various files. The control flow is likewise much more localized, making it much clearer what each step does.

The caveat mentioned above is that while `HMRNull` (for example) overrides `-parseForest`, that method won’t be invoked by the recursive block unless specifically defined to (as is the case here). That is, this is not a magic loophole that solves the [Expression Problem](http://garbagecollective.quora.com/Extensibility-for-the-Masses-a-novel-solution-to-the-expression-problem-PDF).