Rearrange the typechecking of arrows, especially arrow "forms"

The typechecking of arrow forms (in GHC 7.6) is known to be bogus, as
described in Trac #5609, because it marches down tuple types that may
not yet be fully worked out, depending on when constraint solving
happens.  Moreover, coercions are generated and simply discarded.  The
fact that it works at all is a miracle.

This refactoring is based on a conversation with Ross, where we
rearranged the typing of the argument stack, so that the arrows
have the form
   a (env, (arg1, (arg2, ...(argn, ())))) res
rather than
   a (arg1, (arg2, ...(argn, env))) res
as it was before.

This is vastly simpler to typecheck; just look at the beautiful,
simple type checking of arrow forms now!

We need a new HsCmdCast to capture the coercions generated from
the argument stack.

This leaves us in a better position to tackle the open arrow tickets
 * Trac #5777 still fails.  (I was hoping this patch would cure it.)
 * Trac #5609 is too complicated for me to grok.  Ross?
 * Trac #344
 * Trac #5333
Merge branch 'master' of http://darcs.haskell.org/ghc
Remove the FLEX support from the build system

Most of it was commented out anyway
Remove some out-of-date comments
Remove unused CTAGS from build system
Remove unused 'PackageSourceURL' from build system
Don't test BootingFromHc when setting SupportsSplitObjs

We no longer set BootingFromHc
Remove a couple of lingering references to the dead BootingFromHc variable
Remove the darcs support from sync-all
Remove the VCS column from 'packages'

It's now always 'git'.
Typofix.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Ensure that isStrictDmd is False for Absent (fixes Trac #7737)

The demand <HyperStr, Absent> for a let-bound value is bit
strange; it means that the context will diverge, but this
argument isn't used. We don't want to use call-by-value here,
even though it's semantically sound if all bottoms mean
the same.

The fix is easy; just make "isStrictDmd" a bit more perspicuous.
See Note [Strict demands] in Demand.lhs
add a comment about LD_STAGE0
comments
Satisfy the invariant on CmmUnsafeForeignCall arguments

There was potentially a bug here, but no actual failures were
identified in the wild.

See Note [Register Parameter Passing]
Refactor the pipeline/hsc interaction

It would probably still benefit from some tidying up, but it's now
much more opaque, with the control flow easier to understand.
Remove old ltx and verbatim utils
Fix #7722: iOS runtime loader quirk.

Patch from Stephen Blackheath!
Closures must be zeroed even without LDV-profiling. Partially fixes #7747

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Follow defaultErrorHandler change, fixes #7752.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>