Changes to ghc(4) template-haskell

Changes to ghc:
commit 00a9110243ded97494535dc450838f0aebb2c3f3
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Mon Dec 30 12:10:45 2013 +0000

    Comments only

commit d58a8df39eccafa2a4f3c84de7d8d5c24b44a85d
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Sat Dec 28 12:29:05 2013 +0000

    Comments only

commit 8721743e88f4c8c385eb0ceb0ca6804b2143a8fa
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Sat Dec 28 12:28:52 2013 +0000

    Re-factor TcCanonical (again), fixes Trac #8603

    This is a substantial refactoring of the canonicaliser. The proximate
    cause was that we were sometimes failing to correctly orient a
    tyvar/tyvar equality (x ~ y), because the kind of x or y was not fully
    zonked at the moment we compared them.  That in turn led me to look
    closely at the way that canEvNC (which decomposes equalities) worked.

    * The big change is that the 'reOrient' and 'classify' functions are gone,
      along with classify's 'TypeClassifier' return type.  Instead the
      re-orientation is built into canEqNC.  When we find a type variable
      we divert into canEqTyVar, and so on, very much as in TcUnify.

    * TcCanonical.canEqTyVar, canEqLeafFun, etc now carry a SwapFlag (to
      reduce duplication), just as in TcUnify; now SwapFlag itself is
      defined in BasicTypes

    * I renamed TcSMonad.rewriteCtFlavor to rewriteEvidence,

    * I added a new specialised version of rewriteEvidence, called
      TcSMonad.rewriteEqEvidence.  It is easier to use, and removes
      the crafty but brain-mangling higher order casts that we were
      using before.

    The result is not exactly simpler, but it's pretty clear and, I think,
    significantly more efficient.  And it fixes Trac #8603!

commit a6f6169a9939525c859b274955e8606d6080100f
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Sat Dec 28 12:05:45 2013 +0000

    Define mkTcNomReflCo = TcRefl Nominal, and use it all over

    This patch doesn't include the changes to TcCanonical and TcSMonad,
    which are a bigger follow-up patch, so it is tightly coupled to the
    follow-up.

Changes to template-haskell:
commit 21a48605d856ca334bb3a018e02255349d69a8c4
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Sat Dec 28 11:05:31 2013 +0000

    Improve mkName, so that it correctly parses the name ^..

    This fixes Trac #8633; thanks to aavogt for a first draft.