Automatically define _INPLACE variables for perl programs too

and use them for split
Use the automatic variables for touchy too
Automatically add the $(exeext) to program names

We now define _PROGNAME, and _PROG is automatically defined with
$(exeext). This will shortly automatically use the right exeext
depending on what stage it is being compiled with (exeext may be
different for different stages when cross-compiling).
Make sure that Constraint is unrelated to other kinds in tcIsSubKind

This was causing the bug reported in Trac #7697
Treat equalities with incompatible kinds as "irreducible" constraints

Originally we had the invariant that CTyEqCan and CFunEqCan have LHS
and RHS with compatible kinds.  This is important because if they have
different kinds, then a substitution using the CTyEqCan can give rise
to an ill-kinded type, which in turn makes typeKind crash, and this
led to Trac #7696.  (The possibility of this happening really only
occurred when we introduced kind polymorphism.)

I thought at first this was going to be really awkward to solve, but
happily it turned out to be easy.  We already have CIrredEvCan
constraints, which are "stuck"; we can't use them and we can't solve
them.  Yet. After some substitution from solving other constraints we
may be able to make progress.

So for equality constraints where the LHS and RHS don't have compatible kinds
(although perhaps not YET compatible, eg k and *, just needing to
unify k := *), we now generate a CIrredEvCan, plus the necessary kind
equality constraint.

This entailed some refactoring of course, but only in TcCanonical.  In
particular, the emitKindConstraint code has gone, in favour of a kind
check in canEqLeaf.  See Note [Equalities with incompatible kinds] in
TcCanonical, and Note [CIrredEvCan constraints] in TcRnTypes
Comments and type signatures only
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
Fix accidentally commited debug form of FIND_LLVM_PROG.
Rewrite HACKING and convert to markdown.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
Add more notes on hacking and filing bugs to README.md

Signed-off-by: Austin Seipp <aseipp@pobox.com>
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'.