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.
Okay it looks like the parser kernel doesn't actually call this constructor. It calls the 3-arg constructor with a null production. Maybe you can delete this constructor and explicitly pass null to the constructor calls where null is valid? Then at least the developer would be forced to think what they should pass as the production, and decide for themselves if it should be null. That's probably the best you can enforce. Beyond that you just have to add a comment to the constructor explaining the circumstances under which it's allowed to be null.