Added hashing for nodes based on content.
Implemented addition.
Removed unused expression_helpers.py module.
Added Expr() as root of the hierarchy. Added replace_child function for operator replacement.
Refactored solver.py -> simplifier.py to use class and take an output delegate.
Rewrote tests to work with refactorings.
All operations are now done in place on the original expression tree. Allows for step by step reporting.
Added first steps.
Zipper API added.
Rewrote operators to inherit form tuple. Removed base.py.
Renamed ops.py to avoid confusion with standard library module operators.
Added light documentation for zipper.
Fixed ops to handle noncommutative operators.
Fixed parser to work with new operators.
Added convenience functions to operator.
Ported simplifier to support zipper structure.
Incomplete changes to simplifier tests. Included helper function for testing generator functions.
Ported everything to use Zipper for manipulating hierarchy.