Warn if you use -XTemplateHaskell in stage1

This should really be an error, but we'll just warn for now
Tidy up the error messages we get from TH in stage1 (Trac #8312)

Instead of panic-ing we now give a sensible message.
There is quite a bit of refactoring here too, removing
several #ifdef GHCI things