Require DataKinds for promoted list/tuple syntax in types

Fixes Trac #7151
Test FlexibleInstance not UndecidableInstances in the ambiguity check

Fixes Trac #7131
Use TcMType.growThetaTyVars (which works) rather than TcSimplify.growPreds (which doesn't)

I think this got left behind when we simplified and improved TcSimplify.  The effect
was that we had a function like
   class P a b | a -> b
   class Q b c | b -> c

   f :: (P a b, Q b c) => a -> a

and were were failing to quanitfy over 'c', even though it is (indirectly) determined
by 'a'.

This make Programatica fail to compile: Trac #7147
Allow a vew pattern or bang pattern in a record pattern.

e.g.
        data T = MkT { x,y :: Int }

        f (MkT { x = !v, y = negate -> w }) = v + w
Improve documentation for rank-1 types (Trac #7137)
When pattern matching against a constructor with equalities,
require either -XGADTs *or* -XTypeFamilies (rather than only the former)

Fixes Trac #7156
Profiling: open .prof when -hr<cc> is specified

The code for retainer profiling is used with e.g. +RTS -hc -hrfoo -RTS,
as well as with +RTS -hr -RTS.
Export startProfTimer and stopProfTimer symbols.

This fixes unresolved symbols error when dynamically linking base.
Avoid the quadratic append trap in flattenCmmAGraph

Fixes a perf problem in perf/compiler/T783
remove tabs
remove tabs
remove tabs
Retain ordering of finalizers during GC (#7160)

This came up since the addition of C finalizers, since Haskell
finalizers are already stored in an explicit list.  C finalizers on
the other hand get a WEAK object each, so in order to run them in the
right order we have to make sure that list stays in the correct
order.  I hate adding new invariants, but this is the quickest way to
fix the bug for now.  A better way to fix it would be to have a single
WEAK object with a list of finaliers attached to it, and a primop
for adding finalizers to the list.
add X86_64_GOTTPOFF relocation for errno

Submitted by: Markus Pfeiffer <markus.pfeiffer@morphism.de> on cvs-ghc
move startProfTimer() and stopProfTimer() to the public headers
Fix a discrepancy between two calculations of which generation to collect

The calculation should be done in one place, of course.
improve debug output
Reduce fragmentation when using +RTS -H (with or without a size)
Improve compile times by enabling +RTS -H for GHC (only when bootstrapped)
tidy up