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
Run ghc-pkg check during validate

Should help to track down cache-out-of-date problems
Merge branch 'master' of http://darcs.haskell.org/ghc
Define chkAppend, and use it

Somtimes we need (xs ++ ys) in situations where ys is
almost always empty.  Utils.chkAppend checks for that
case first.
Fix a trailing case in making FamInstTyCon,
where the invariant didn't hold, leading to
subsequent chaos. Happily an ASSERT caught it.
set DYNAMIC_GHC_PROGRAMS to NO if platform does not support shared libs
add arm-unknown-linux to platforms which do not support shared libs

This patch disables shared libs support on arm-unknown-linux platform. It
unbreaks ghc-stage2 on this platform after recent Ian's changes
in dynamic/shared libs domain. The reason why ghc-stage2 fails when linked
with shared libs is still unknown so this is just a workaround at the moment,
but it at least recovers previous "correct" behavior of ghc-stage2
on ARM/Linux
Build statically when using LLVM.

The LLVM back end does not yet work when building dynamically.
Use the symmetric version of the newtype coercion.
Add a comment
Fix a comment

Make expands things even in comments