Thanks to `TypeInType`, we can now calculate `==` for types
in an extremely general fashion,. The approach used here is (in
concept) the one previously suggested in a comment, but rejected
as impossible at the time. while still (I believe) gettingThere will be some cases when the
previous version was able to reduce and this one is not,
it to reduce just as easily as the previous (horrible) approachparticularly for types in `*` that are unknown, but known equal.
The only downside I seeHowever, the new behavior is that people will have to get rid ofmuch more uniform. Within the
their custom instances, which they'll probably be quite happy toestablished framework of equality testing by pattern matching,
doit does a far better job than the previous version.