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
Use monotonic clock in Select.c (#5865)
Use monotonic time function for darwin (#5865)
Support large SLIDE instructions.

The bytecode generator used to keep track of the stack depth with a
16-bit counter, which could overflow for very large BCOs, resulting in
incorrect bytecode.

This commit switches to a word-sized counter, and eagerly panics
whenever an operand is too big, instead of truncating the result.

This allows us to work around the 16-bit limitation in the case of SLIDE
instructions, since we can simply factor it into multiple SLIDEs with
smaller arguments.
Export State monad transformer from ByteCodeItbls.
Bytecode assembler refactoring.

Use a free monad to specify the assembling procedure, so that it can be
run multiple times without producing side effects.

This paves the way for a more general implementation of variable-sized
instructions, since we need to dry-run the bytecode assembler to
determine the size of the operands for some instructions.
Implemented word-sized addressing of pointers and literals.
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]
Fix operand expansion function.
Add newline to the end of file
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