Move wired-in `template-haskell` identifiers into `ghc-internal` thus making it reinstallable
We move all the wired-in parts of template-haskell into ghc-internal.
We then re-export these from ghc-boot-th and from template-haskell.
ghc is made to depend only on ghc-boot-th, rather than template-haskell.
This removes the two reasons that template-haskell was not reinstallable:
- It had wired-in identifiers
- It was a dependency of
ghc(and hence addingghcto the build plan forced a specific version).
This in turn lets us remove a bunch of special logic around the template-haskell package.
Edited by Teo Camarasu