Several improvements and cleanups

* Support for visitor pattern
* Optimizations for hashing, ATNConfigSet
* PEP8/Pyflakes cleanups
* Runtime compatibility with both Python2 and Python3 with minimal changes
 * no outside dependencies added, uses small _compat.py (~20 lines)
 * same runtime passes both py2 and py3 tests
 * template works to generate code that runs under both py2 and py3