Oops: Infer didn't need TemplateHaskell
Infer.rename -> Data.Map.Utils.lookupOrSelf
Split Infer.Unify to its own module

  * emptyContext defined near the type
  * New Infer.Monad