Remove an unused make variable
Allow overlaps when -XIncoherentInstances is in force

This change allows a top-level instance to be used even if there is
a (potentially) overlapping local given.  Which isn't fab, but it is
what IncoherentInstances is *for*.

This fixes the bug part of Trac #6002.
Fix worker/wrapper for CPR functions

A long-standing and egregious bug in the worker/wrapper code meant
that some functions with the CPR property weren't getting a CPR
w/w. And that had the effect of making a tail-recursive function not
tail recursive.  As well as increasing allocation.

Fixes Trac #5920, and #5997.

Nofib results (highlights):

        Program           Size    Allocs   Runtime   Elapsed  TotalMem
--------------------------------------------------------------------------------
         boyer2          -0.1%    -15.3%      0.01      0.01     +0.0%
        mandel2          -0.0%     -8.1%      0.01      0.01     +0.0%
           para          -0.1%    -11.8%     -7.9%     -7.8%     +0.0%
--------------------------------------------------------------------------------
            Min          -0.1%    -15.3%     -7.9%     -7.8%    -33.3%
            Max          +0.0%     +0.2%     +6.3%     +6.3%     +3.7%
 Geometric Mean          -0.0%     -0.4%     +0.1%     +0.1%     -0.5%

Looks like a clear win.  And I have not even recompiled the libraries, so
it'll probably be a bit better in the ed.
Allow kind-variable binders in type signatures

This is the last major addition to the kind-polymorphism story,
by allowing (Trac #5938)

 type family F a   -- F :: forall k. k -> *
 data T a          -- T :: forall k. k -> *
 type instance F (T (a :: Maybe k)) = Char

The new thing is the explicit 'k' in the type signature on 'a',
which itself is inside a type pattern for F.

Main changes are:

* HsTypes.HsBSig now has a *pair* (kvs, tvs) of binders,
  the kind variables and the type variables

* extractHsTyRdrTyVars returns a pair (kvs, tvs)
  and the function itself has moved from RdrHsSyn to RnTypes

* Quite a bit of fiddling with
     TcHsType.tcHsPatSigType and tcPatSig
  which have become a bit simpler.  I'm still not satisfied
  though.  There's some consequential fiddling in TcRules too.

* Removed the unused HsUtils.collectSigTysFromPats

There's a consequential wibble to Haddock too
Merge branch 'master' of http://darcs.haskell.org//ghc
Simplify construction of equality predicates

There was an ASSERT which does not hold during type checking (and
should not) which is later checked by Core Lint
Simplify the typechecking of RULES

Not only does this fix Trac #5853, but it also eliminate
the horrid SimplEqsOnly part of the constraint simplifier.

The new plan is described in TcRules
 Note [Simplifying RULE constraints]
Adding -ddump-avoid-vect option for vectorisation avoidance diagnostics
Do SCC on instance declarations (fixes Trac #5715)

The trouble here is that given

    {-# LANGUAGE DataKinds, TypeFamilies #-}
    data instance Foo a = Bar (Bar a)

we want to get a sensible message that we can't use the promoted 'Bar'
constructor until after its definition; it's a staging error.  Bud the
staging mechanism that we use for vanilla data declarations don't work
here.

Solution is to perform strongly-connected component analysis on the
instance declarations. But that in turn means that we need to track
free-variable information on more HsSyn declarations, which is why
so many files are touched.  All the changes are boiler-platey except
the ones in TcInstDcls.
Merge branch 'master' of http://darcs.haskell.org//ghc
Comments only
Merge branch 'master' of http://darcs.haskell.org/ghc
Merge branch 'master' of http://darcs.haskell.org/ghc
Move free-var info from InstDecl to FamInstDecl
Merge branch 'master' of http://darcs.haskell.org/ghc
Add a couple of comments
OS X: disable bootstrapping info for 'ar'

Xcode 4.3 installs the command line tools in a different location as earlier versions of Xcode. With the bootstrapping info, the build fails if the bootstrap compiler was built with an older version of Xcode.
Add a quotRemWord2 primop

It allows you to do
    (high, low) `quotRem` d
provided high < d.

Currently only has an inefficient fallback implementation.
Add an X86/amd64 implementation for quotRemWord2
Empty data types should not be "trimmed" by TidyPgm

That in turn means that you can derive Show etc in other modules,
fixing Trac #6031