Introduced folds, refactored Exp to be a functor fixpoint.
Unification, substitution and case expression type checking.