[vecz] Avoid scalarization using large ints
When we scalarize, when needed, we bitcast values to integer types,
shift and mask as needed, and then bitcast to the destination type. This
is not generally valid: when any source element is poison, if it is
inserted into a full-width integer type, the full integer becomes
poison, it is not possible to mask out bits.
This commit avoids creating the full-width integer by bitcasting
individual elements of the source vector, which not only avoids the bug
but also generally results in simpler shorter code.
This commit also removes some dead code from scalarizer.cpp. UndefValue
is already handled by the code immediately above.