Rewrite of contraints in terms of the ATTAPL chapter
got simplification working more or less
Added desugaring of functions in let bindings to lambda's
Fixed strange bug in typescheme
Reverted much of the constraints/collection/solving.
It now has a notion of universally quantified things, but is simpler than the ATTAPL approach I was writing in earlier commits because name analysis is already done :)