Comments, and rename a variable
Typecheck typed TH splices properly (fix Trac #8577)

This was an egregious error.  If e :: T (Q ty1)
then when we have the splice

     $e :: ty2

we must ensure that ty1~ty2 before we even think about
running the splice!

I took the opportunity to remove the dead-code tcSpliceDecls
altogether.
Suggest TemplateHaskell after encountering a naked top-level expression

Helps fix #7396
Clean up Lexer.srcParseErr

The lexer now uses unicode single quotation marks in its error messages
if possible.  This is due to the use of the 'quotes' combinator.
Suggest TemplateHaskell after encountering a parse error on '$' (#7396)