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.
Well... I think this is open to discussion.
1. I want to try and add this to the SDF parser, and do the disambiguation on Constants and TermConses alone. The other thing is that for each Terminal in a grammar, a Constant will be produced. SDF doesn't give me the possibility to do so.
2. Ex: for the production `Exp ::= Exp "+" Exp`, the new parser will generate a TermCons node with two other TermConses, and a Constant for `+`. This will not be present in the final AST because I'm deleting it pretty quickly. In this case it doesn't make too much sense to make the constant have a reference to a Production. This field should be viewed as metadata useful for error reporting.