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.