Corrected errors in monad instance by having equality do some weak normalization.
Added more tests
Changed some constructors, switched to hashable Hash package, other changes.
Added some more type builders
Added new modules