Consistently use validity checks for TH conversion of data constructors
We were checking that TH-spliced data declarations do not look like this:
data D :: Type = MkD Int
But we were only doing so for data
declarations' data constructors, not for
newtype
s, data instance
s, or newtype instance
s. This patch factors out
the necessary validity checks into its own cvtDataDefnCons
function and uses
it in all of the places where it needs to be.
Fixes #22559 (closed).