Rule versioning

Initial implementation of annotation-based rule versioning with unit tests and a runtime `RuleDependencyChecker`. This forms the initial support for antlr/antlr4#35.