Fix build on OS X

sed on OS X doesn't handle \+
Tighten up on the kind checking for foralls

In particular,
   (forall a. Num a => ...)
always has kind *, becuase the "=>" really is a function.

It turned out that this was at the bottom of the crash in Trac #7778,
which is now fixed
Suppress a misleading error message (Trac #7869)

We were saying
     The function `f' is applied to one argument,
     but its type `[a] -> b' has only one
which is obviously bogus.

This fix suppresses the explanation in cases where it may not
be the *right* explanation.
Exend the "Too few args" message for naked Ids (Trac #7851)

Previously, for
  f :: [Bool]
  f = map not

we'd get a helpful message
    Probable cause: ‛map’ is applied to too few arguments

but not for
  f :: [Bool]
  f = map

which seems a bit stupid.
Fix comment to placate Haddock
Enable -funbox-small-strict-fields by default

The flag shows no real impact on nofib benchmarks and GHC itself,
which is expected given the small number of strict but not already
unpacked fields in the source of these programs. However, the flag
allows us to omit most of the UNPACK pragmas that are so common in
source code today.
extended ticky to also track "let"s that are not conventional closures

This includes selector, ap, and constructor thunks. They are still
guarded by the -ticky-dyn-thk flag.

(This is 024df664b600a with a small bug fix.)
Don't suppress foralls in the RHS of a type synonym definition!

Fixes Trac #7872
Improve documentation of kind polymorphism
Make isPredTy not use typeKind

The pretty-printer uses isPredTy to decide whether to use "=>" or "->",
and typeKind crashes on ill-kinded types. But it's really unhelpful for
the pretty-printer to crash on an ill-kinded type, because then you can't
see it!
Eliminate (given) flatten-skolems in favour of user type variables

See Note [Eliminate flat-skols].  IT wasn't exactly wrong before
the the error messages are deeply strange.
Fix kind quantification (again)

We simply weren't quantifying kind variables at the points we
were claiming.  In paritcular, in
     forall (a:k). blah
we quantify the 'k' around the 'forall a', provided k isn't
already in scope
In doTopReactDict, try lookup even if fundeps work

Previously we looked for fundeps, and if any fired we
didn't try to solve the constraint.  But that's wrong
(see Note [Weird fundeps]).  Now I solve first and only
if that fails try fundeps.  Code is neater too.

Fixes Trac #7875
Improve error message for existential newtypes
Do not duplicate work in SpecConstr (fix Trac #7865)

This is a bad bug, if a rare one.
See Note [Work-free values only in environment].

Thanks to Amos Robinson for finding it.