This patch refactors the existing TargetLowering::BuildUDIV base implementation to support non-uniform constant vector denominators.
This does require a change to the function arguments, which would affect any target that has overridden this (none in mainline though).
isKnownNeverZero() should also probably be wary of undef?