Abortive attempt at parameterising the flattener over EqRel.

Aborted because flattening is not necessary for newtypes. The key
bit about flattening for type families is that type families can
have non-trivial patterns, where flattening a deeply-nested type
can get the outer type family to reduce. This is *not true* with
newtypes, where the patterns are always trivial. So, don't bother
flattening to squeeze out newtypes.
Just use topNormalizeNewType_maybe.
Checkpoint. Still need to write canEqTyVar & friends.