Try harder to find a canonical unmerge type when trying to cover the
desired target type. Handle finding a compatible unmerge type for two
vectors with different element types. This will return the largest
multiple of the source vector element that will evenly divide the
target vector type.
Also make the handling mixing scalars and vectors, and prefer the
source element type as the unmerge target type.
Can we reorganize this to not have so much nesting?
Maybe duplicate greatestCommonDivisor(OrigSize, TargetSize); above this for the scalar case and early exit.