Python 2 compatibility
o Specify file encoding is utf-8
o Added != (__ne__) support in terms of == (__eq__) to all classes
o Simplify charclass.escape to not use Python3-only nonlocal keyword
  and removed redundant implementation
o Add union and concatenation to the main.py demo