Make template-haskell a stage1 package
This makes template-haskell a stage1 package at the cost of some CPP.
The CPP in compiler/...
will need to be updated as we need to be able to build these modules with any boot version of template-haskell.
I think overall this is worth the extra cost, but we should be cogent about taking on this extra maintenance burden.
When reviewing it would be great if folks could pay special attention to the stage numbers in comments. I find this stuff confusing and it's quite likely I've mixed them up in places!
Edited by Teo Camarasu