Major refactoring of the way that UNPACK pragmas are handled

The situation was pretty dire.  The way in which data constructors
were handled, notably the mapping between their *source* argument types
and their *representation* argument types (after seq'ing and unpacking)
was scattered in three different places, and hard to keep in sync.

Now it is all in one place:

 * The dcRep field of a DataCon gives its representation,
   specified by a DataConRep

 * As well as having the wrapper, the DataConRep has a "boxer"
   of type DataConBoxer (defined in MkId for loopy reasons).
   The boxer used at a pattern match to reconstruct the source-level
   arguments from the rep-level bindings in the pattern match.

 * The unboxing in the wrapper and the boxing in the boxer are dual,
   and are now constructed together, by MkId.mkDataConRep. This is
   the key function of this change.

 * All the computeBoxingStrategy code in TcTyClsDcls disappears.

Much nicer.

There is a little bit of refactoring left to do; the strange
deepSplitProductType functions are now called only in WwLib, so
I moved them there, and I think they could be tidied up further.
Merge branch 'master' of darcs.haskell.org:/home/darcs/ghc

Conflicts:
	compiler/typecheck/TcTyClsDecls.lhs
Revert "Fix a bug in the handling of nested orElse"

This reverts commit f184d9caffa09750ef6a374a7987b9213d6db28e.

The next commit will fix it in a better way.
A better fix for #7493 (see comment for details)
Document the behavior of "info!".
Tidy up documtation of monomorphsim restriction etc
Wibbles to faa8ff40 (UNPACK pragmas)

Nothing big here, just tidying up deetails
Merge branch 'master' of darcs.haskell.org:/home/darcs/ghc
typo
spelling in doc
Fix Trac #7506 (missing check for form of FFI type)
Merge branch 'master' of darcs.haskell.org:/home/darcs/ghc
Move the kind Nat and Symbol out of TysPrim and into TysWiredIn

They properly belong in TysWiredIn, since they are defined in Haskell
in GHC.TypeLits.

Moveover, make them WiredIn (again as they should be) and use
checkWiredInTyCon when encountering them in TcHsType.tc_hs_type,
so that the interface file is loaded.  This fixes Trac #7502.
Add some ASSERTs to calls of zipTopTvSubst
Pass the correct inst_tys argument to dataConCannotMatch, in mkRecSelBinds

This fixes Trac #7503.
Fix TcUnify.matchExpectedTyConApp so that it returns types of compatible kinds

This fixes Trac #7368. The problem was that we were matching
   Bad w ~ f (Bad f)
where (f :: * -> *).  Thta leads to (w ~ Bad f), which is
ill-kinded, but matchExpectedTyConApp was returning the (Bad f)
as the argument type, and that was being used to instanatiate
w in the data constructor type, which is very bad.

The code also becomes simpler and easier to understand, which is
an excellent thing.
Merge branch 'master' of http://darcs.haskell.org/ghc
Rename all of the 'cmmz' flags and make them more consistent.

There's only a single compiler backend now, so the 'z' suffix means
nothing. Also, the flags were confusingly named ('cmm-foo' vs
'foo-cmm',) and counter-intuitively, '-ddump-cmm' did not do at all what
you expected since the new backend went live.

Basically, all of the -ddump-cmmz-* flags are now -ddump-cmm-*. Some were
renamed to be more consistent.

This doesn't update the manual; it already mentions '-ddump-cmm' and
that flag implies all the others anyway, which is probably what you
want.

Signed-off-by: Austin Seipp <mad.one@gmail.com>
'sync-all get -q' also passes -q to 'git submodule'
Redirect asynchronous exceptions to the sandbox thread in runStmt (#1381)

See comment for details.

We no longer use pushInterruptTargetThread/popInterruptTargetThread,
so these could go away in due course.