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.
Oh right, I remember, the parser does some funky stuff internally with the Token and KList classes. Okay. I am persuaded that it makes sense to go this route for now. Please make sure it is clear that developers should never call this constructor from outside the parser kernel, then.