Fix #7484, checking for good binder names in Convert.

This includes a somewhat pedantic check against the code in Lexer.x
to make sure that TH accepts the same set of names that the lexer
does. Doing this unearthed a latent bug dealing with unicode identifiers
in OccName.
Test #1476 in th/T1476
Fix #1476 by allowing pattern splices to bind variables.

Operationally, this is quite simple: just rename the RHS of a
pattern in the right scope, after running a pattern splice.
Now that splices are run in the renamer, this is easy.

From a coding standpoint, it's rather painful, because there's
a moderate-sized impedance mismatch between the code in RnPat and
RnSplice. The monads are different (CpsRn vs RnM) as are the callback
types in a call to rnSpliceGen. Throw in the necessity of lhs-boot
files, and it all gets a little ugly.

Suggestions to make this less ugly are strongly encouraged.