add unittest2 dependency for tests.
try to fix canonical_expression as PY3 disallows some of the comparisons used under PY2.
py3compat for __unicode__ method.
format() compat.
py3compat, decode() guards.
sop to flake8
format() compat.
add custom_fixers