This patch implements visible kind application (GHC Proposal 15/trac`Trac #12045`), as well as #15360 and #15362.
It also refactors unnamed wildcard handling, and requires that type equations in type families in Template Haskell be
written with full type on lhs. PartialTypeSignatures are on and warnings are off automatically with visible kind
application, just like in term-level.
This patch however is not ready to be merged, as there are a few problems I can't figure out myself. In tests T13550
and T12045TH1, the data instances are printed without parentheses and I just can't find out why. For test T13524,
my patch yields error and only works when I switch the order of the 2 arguments. For test T15415, my patch runs
without error/warning due to my new handling of wildcard. I hope to get feedback on the patch and help on how to
fix/handle these above-mentioned cases.