Fully separate surface and core languages in Resugarer.
* You must now have a transformation for each surface form.
* Check rules to ensure they are well typed w.r.t. the
surface and core grammars.
* Check output terms to ensure they obey the core grammar.
* Add directives to handle both ghc6 and ghc7.