[X86] Ensure a (vXi1 bitcast(iX Mask)) memory mask is canonicalised for extension before it might get split by legalisation (#175769)
Masked load/store/gathers often need to bitcast the mask from a
bitcasted integer.
On pre-AVX512 targets this can lead to some rather nasty scalarization
if we don't custom expand the mask first.
This patch uses the canonicalizeBoolMask /combineToExtendBoolVectorInReg
helper functions to canonicalise the masks, similar to what we already
do for vselect expansion.
Alternative to #175385
Fixes #59789