To get static checking I converted the version template to a method and also moved the compatibility check into the target so that in the worst-case target developers can override the compatibility check per their needs. I have also decided to throw an exception for the Java target when the code generation and runtime library versions are incompatible. Change the tool message per Sam's request.
tweaks per Sam's comment. define default version so targets don't fail to compile.
should not be a default version lest all targets pass by default. make sure java target and tool move in lockstep. Fixes #572
damn intellij/git always loses changes but just with antlr repo. DAMN! commiting last files manually
Merge branch 'runtime-tool-version-sync' into 4.2.3-dev