Split out a `template-haskell` pretty printing package
Problem
Currently template-haskell contains two modules: Language.Haskell.TH.Ppr and Language.Haskell.TH.PprLib.
These expose a variety of pretty printing functions and add a dependency on pretty.
These modules are both part of the public interface of template-haskell and are used internally by GHC, mostly for reporting errors.
This is problematic because it means that users of template-haskell cannot re-install pretty.
This would even be the case if #24703 (closed) is implemented. A dependency on pretty would have to be moved onto some non-reinstallable dependency of the template-haskell library.
Proposed solution
Split out a template-haskell-pretty library. This library would depend on the internals of the template-haskell library through the package split out in #24703 (closed) and define the pretty printing modules. Then both template-haskell and ghc would depend on template-haskell-pretty. Note template-haskell-pretty could be another standard reinstallable package.
This would mean that simply depending on template-haskell (assuming #24703 (closed) is implemented) wouldn't make pretty non-reinstallable. Though depending on ghc still would.
In the future we could stop re-exporting the modules from template-haskell-pretty from template-haskell altogether but that would have to come after a long deprecation period.