Reify oversaturated data family instances correctly (#17296)
TcSplice was not properly handling oversaturated data family
instances, such as the example in #17296 (closed), as it dropped arguments due
to carelessly zipping data family instance arguments with
tyConTyVars. For data families, the number of tyConTyVars can
sometimes be less than the number of arguments it can accept in a
data family instance due to the fact that data family instances can
be oversaturated.
To account for this, TcSplice.mkIsPolyTvs has now been renamed to
tyConArgsPolyKinded and now factors in tyConResKind in addition
to tyConTyVars. I've also added
Note [Reified instances and explicit kind signatures] which
explains the various subtleties in play here.
Fixes #17296 (closed).