Adding Constant class and ProductionReference as a superclass of TermCons

This allows for better error reporting in the new parser when having ambiguities.
It will also allow for more simple disambiguation filters.

@dwightguth please review. We talked about this change a while back, and now I got to it.
Basically now the new parser outputs only two types of objects: TermCons and Constant, bot having a reference to the production from which they come from.
They are actually the same thing. The parser has two main objects: NonTerminalState, and a PrimitiveState. The first one calls another NonTerminal, the second one matches on something from the text. Doesn't matter if it is a terminal from the middle of the production, or if it is a lexical production.