Use union types instead of join in binder by ilevkivskyi · Pull Request #18538 · python/mypy

@ilevkivskyi @x612skm

This would be more consistent with what we already do for ternary
expressions. Note the change in match test results from match logic not
handling well the situation when initial type is a union. A possible
workaround would be to force "collapsing" union of tuples back into a
tuple with union, but it is not easy and was planning to do some cleanup
in the match handling as well (in particular it uses joins instead of
unions in a way that will be inconsistent with new binder behavior). I
want to put the switch from join to union for match statement in a
separate PR.

Note I also simplify a bunch of special-casing around `Any` in the
binder that existed mostly because `join(Any, X) == Any`.
Fixes python#3724