Precedence predicates

Add a new `PrecedencePredicateTransition` and evaluate precedence predicates using an `IntegerStack` tracked in the parser instead of in the generated context class. Precedence metadata is encoded in the ATN, although not used by the default implementation.

* Saves memory in the context classes
* Allows an interpreted mode to evaluate precedence predicates even when the outer context object is not available