Wibbles to yesterday's "Simplify kind generalisation" patch

In particular, in mkExport we must quantify over the kind
variables mentioned in the kinds of the free type variables
Comment typo
Fix crash with large objects (#7919)

See comments for details.
Add an echo target to the build system
Revert "Fix -dynamic-too on Windows"

This reverts commit 5734f7afcc2b9acf857f8e0f745185bf01b91148.

It didn't fully fix -dynamic-too on Windows
Don't try to use -dynamic-too on Windows

It doesn't work
Accept derived Read on an empty data type (Trac #7931)
Do not do an ambiguity check on the type in a GHCi ":kind" command

Otherwise we get errors for polykinded type families;
   type family F a :: *
Then :k F
would give an ambiguity check trying to unify (F k1) with (F k2),
which is all a bit stupid.

I found this when investigating Trac #7939
Print kinds of non-* tyvar binders in pprTyThing

This makes the output of :info more useful
Give 'unboundName' a very low binding precedence

This fixes Trac #7937
Check for illegal syntax in types (fixes Trac #7943)
Make 'SPECIALISE instance' work again

This is a long-standing regression (Trac #7797), which meant that in
particular the Eq [Char] instance does not get specialised.
(The *methods* do, but the dictionary itself doesn't.)  So when you
call a function
     f :: Eq a => blah
on a string type (ie a=[Char]), 7.6 passes a dictionary of un-specialised
methods.

This only matters when calling an overloaded function from a
specialised context, but that does matter in some programs.  I
remember (though I cannot find the details) that Nick Frisby discovered
this to be the source of some pretty solid performanc regresisons.

Anyway it works now. The key change is that a DFunUnfolding now takes
a form that is both simpler than before (the DFunArg type is eliminated)
and more general:

data Unfolding
  = ...
  | DFunUnfolding {     -- The Unfolding of a DFunId
    			-- See Note [DFun unfoldings]
      		  	--     df = /\a1..am. \d1..dn. MkD t1 .. tk
                        --                                 (op1 a1..am d1..dn)
     		      	--     	    	      	       	   (op2 a1..am d1..dn)
        df_bndrs :: [Var],      -- The bound variables [a1..m],[d1..dn]
        df_con   :: DataCon,    -- The dictionary data constructor (never a newtype datacon)
        df_args  :: [CoreExpr]  -- Args of the data con: types, superclasses and methods,
    }                           -- in positional order

That in turn allowed me to re-enable the DFunUnfolding specialisation in
DsBinds.  Lots of details here in TcInstDcls:
	  Note [SPECIALISE instance pragmas]

I also did some refactoring, in particular to pass the InScopeSet to
exprIsConApp_maybe (which in turn means it has to go to a RuleFun).

NB: Interface file format has changed!
Refine 'type_determines_value' in Specialise.  Fix Trac #7785.

See Note [Type determines value] in Specialise.
Use new TcHsType.zonkSigType to establish Type invariants

Finally (I hope) fixes Trac #7903.

See Note [Zonking inside the knot] in TcHsSyn
Improve validity check to give better error message

Fixes Trac #7809
Eta-reduce data/newtype family instance axioms (Trac #4185)

This long-overdue fix arranges to eta-reduce the axiom for a
data/newtype instance in the same way that we have longq
eta-reduced the axiom for a newtype.

See Note [Eta reduction for data family axioms] in TcInstDcls
and Note [Deriving, type families, and partial applications] in TcDeriv.
Fix Read for empty data types (again; Trac #7931)
Remove an out-of-date comment
Add a primitive for coercing values into dictionaries in a special case.

The details of this are described in Note [magicSingIId magic] in basicTypes/MkId.lhs
When verbose, give more information about cache status