bpo-44636: Collapse union of equal types (GH-27178)

The result of `int | int` is now `int`.

Fix comparison of the union type with non-hashable objects.
`int | str == {}` no longer raises a TypeError.
3 files changed