Fold the Union type caster into the overload / type resolver.

Also give the new combination a more modern name.

Beyond copy/pasting the code in, a necessary change is to make Union able to give out types. This is because the caster removes an intermediate Project, which was otherwise used to find them.

This branch disables the unit test that #1177 also addressed (see discussion there), because there is no point in recording that it gets a slightly different wrong answer here.