Use FlexibleInstances for `Outputable (* p)` instead of match-all instances with equality constraints
Commit message:
In #17304 (closed), Richard and Simon dicovered that using -XFlexibleInstances
for Outputable
instances of AST data types means users can provide orphan
Outputable
instances for passes other than GhcPass
.
Type inference doesn't currently to suffer, and Richard gave an example in #17304 (closed) that shows how rare a case would be where the slightly worse type inference would matter.
So I went ahead with the refactoring, attempting to fix #17304 (closed).