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