Fix a nasty loop in Tidy
As the remarkably-simple #22112 (closed) showed, we were making a black hole in the unfolding of a self-recursive binding. Boo!
It's a bit tricky. Documented in GHC.Iface.Tidy, Note [tidyTopUnfolding: avoiding black holes]