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.
So the entire reason you don't want all Constants to have a Production associated with them is because you want terminals to be Constants? Sorry, this just doesn't feel clean to me.Why create an object at all for terminals if they're going to get immediately deleted? This isn't the first time we've special cased this one nasty hack, and it won't be the last. Better for a constant to be a constant, period. Don't use one class to represent two different things.