inference: fix union split handling for custom lattices (#60857)
`MustAlias` has `has_extended_unionsplit(::MustAliasLattice) === true`
so it is treated as a target for union split, but `uniontypes` does not
handle `MustAlias` specially, causing union split to fail for
`MustAlias`.
This issue is addressed by always applying `uniontypes` to the result of
`widenconst(x)`.
External custom lattice implementations could previously provide their
own `uniontypes`, but it would be cleaner interface design if they just
overload `widenconst` for their custom lattice elements so that it
returns `Union`-type.