Fix primitive overload resolution preferences so they make more sense in some cases.

Now the [U]Integer type preference is used only as a final tiebreak,
so e.g. UInteger will now prefer ULong > Integer (32-bit).

It also now has a preference for the same kind (after the same signedness),
so e.g. Long will now officially prefer Long > Integer or ULong > UInteger.
tests: Fix for previous commit