This relatively-small patch implements a feature I previously thought
would be very hard: recursive superclasses. For motivation see
Dimitrios and I worked out that there is actually a relatively simple way
to do the job. It’s described in some detail in
Note [The superclass story]
in TcCanonical, and in
Note [Expanding superclasses]
I propose to put this in 8.0 unless we discover a significant problem.