Tidy up a remaining glitch in unification

There was one place, in type checking parallel list comprehensions
where we were unifying types, but had no convenient way to use the
resulting coercion; instead we just checked that it was Refl.  This
was Wrong Wrong; it might fail unpredicably in a GADT-like situation,
and it led to extra error-generation code used only in this one place.

This patch tidies it all up, by moving the 'return' method from the
*comprehension* to the ParStmtBlock. The latter is a new data type,
now used for each sub-chunk of a parallel list comprehension.

Because of the data type change, quite a few modules are touched,
but only in a fairly trivial way. The real changes are in TcMatches
(and corresponding desugaring); plus deleting code from TcUnify.

This patch also fixes the pretty-printing bug in Trac #6060
Merge branch 'master' of http://darcs.haskell.org/ghc
Wibble to pretty printing
Revert "More Win32 build fixes"

This reverts commit e89ef70475fa5e9cf17af01b1b5d7fced0d2e13c.
Revert "Fix build of rts/Linker.c on Win32"

This reverts commit 0042c478f1169ddd9392fb39de7d0aed865a272e.
Revert "Get GHCi working on Win64"

This reverts commit 05b55c670c7fe3fc01827ca02aafb6926c0b69cb.
Revert "Revert "Get GHCi working on Win64""

This reverts commit 27e585bda6ae8ab68f58abdcb9e06806414a6636.
Revert "Revert "Fix build of rts/Linker.c on Win32""

This reverts commit 02cf6d6f71b5772aa4ddf1b70c192a802886e2c2.
Revert "Revert "More Win32 build fixes""

This reverts commit 29cd6f435f2afb332ad8faf39f5e920ff9c38d9a.
Tell checkProddableBlock how many bytes we want to write

It doesn't suffice for checkProddableBlock to just check whether the
largest possible write could be made at the address we are writing,
as if we are making a smaller write then checkProddableBlock may
conservatively think we will write off the end of the block.

Thus we now tell checkProddableBlock how many bytes we will write.
Define _HOST_OS and _HOST_ARCH when calling hsc2hs

In particular, old-time assumes that mingw32_HOST_OS is set when
we are on Windows, and was going wrong on Win64 because it wasn't
defined.
Fix Win64 build now that hsc2hs knows what platform we're on
Add 'free' to the list of rtsSyms on Win64

Without this, we ended up using
    (gdb) info symbol 0x7ff756a10ac
    msvcrt!free in section .text of C:\Windows\system32\msvcrt.dll
for free, rather than
    (gdb) info symbol 0x2584128
    free in section .text of C:\m64\ghci2\q/../inplace/bin/ghc-stage2.exe
but we were trying to put the address into a 32bit relocation.
Win64 Linker improvements

We now detect if we are given a value that is out of range for a
32bit relocation, and fail with an error.

Added a load more symbols to rtsSyms.
Cast memory primops in the C backend (#5976)

To prevent conflicts with GCC builtins, generate identical code for
calls to mem primos and FFI calls.

Based on a patch by Joachim Breitner.
Allow cases with empty alterantives

This patch allows, for the first time, case expressions with an empty
list of alternatives. Max suggested the idea, and Trac #6067 showed
that it is really quite important.

So I've implemented the idea, fixing #6067. Main changes

 * See Note [Empty case alternatives] in CoreSyn

 * Various foldr1's become foldrs

 * IfaceCase does not record the type of the alternatives.
   I added IfaceECase for empty-alternative cases.

 * Core Lint does not complain about empty cases

 * MkCore.castBottomExpr constructs an empty-alternative case
   expression   (case e of ty {})

 * CoreToStg converts '(case e of {})' to just 'e'
Merge branch 'master' of http://darcs.haskell.org/ghc
More Win64 ghci fixes
Win64 build fix
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc