Improve handling of data type return kinds
Following a long conversation with Richard, this patch tidies up the handling of return kinds for data/newtype declarations (vanilla, family, and instance). I have substantially edited the Notes in TyCl, so they would bear careful reading. Fixes #18300. In GHC.Tc.Instance.Family.newFamInst we were checking some Lint-like properties with ASSSERT. Instead I've added Lint.lintAxiom, and called it from newFamInst. The one new test, T18300, causes an ASSERT failure in HEAD.
Showing with 437 additions and 297 deletions