Rename Cpp constructor of Extension datatype
The Extension datatype defined in GHC.LanguageExtensions.Type is used by GHC and template-haskell. It mostly corresponds to the names of extensions as used in LANGUAGE pragmas, with one(?) odd exception: the Cpp constructor corresponds to the CPP extension. This means we cannot use show to convert an Extension to the corresponding name, but have to define a special function. And it generally seems like a trap for the unwary.
I think we should rename the Cpp constructor to CPP, perhaps with a pattern synonym for backwards compatibility. The only slight annoyance here is that we'd need a very large COMPLETE pragma to avoid incomplete pattern match warnings for functions that match all constructors of Extension. But any such functions will fail to match newly-added extensions anyway, so it's probably okay to omit the COMPLETE pragma?
This came up in !12322 (diffs, comment 555770).