Started modifying the typechecker

Added conditional type application, a current monad in the monad,
and a generalized unifyFun.