Split up algebra some more.

Removed unneeded type constraints.
TypeChecker changed to depth-first again. Going to use a separate algebra to resolve breadth first references.