Simplify kind generalisation, and fix Trac #7916

A buglet that exposed an opportunity for some welcome refactoring
and simplification.  Main changes

* TcMType.zonkQuantifiedTyVars is replaced by quantifyTyVars, which
  does a bit more zonking (so that its clients do not need to)

* TcHsType.kindGeneralise becomes a bit simpler, and hands off
  to quantifyTyVars

* A bit of simplification of the hacky code in TcTyClsDcls.tcConDecl,
  where we figure out how to generalise the data constructor's type

* Improve the error message from badExistential when a constructor
  has an existential type, by printing the offending type

* Some consequential simplification in simplifyInfer.