This adds custom lowering for truncating stores when operating on
fixed length vectors in SVE.
Currently truncating stores are not used in certain cases where
the size of the vector is larger than the target vector width.
It also includes an AArch64-specific DAG combine to prevent a
regression where truncates would be merged in to stores before
being cancelled out with a prior extend; this DAG combine
merges the extends and truncating stores to obtain a normal store.
If you're going to add a target hook for this, please make it a separate function from isTruncStoreLegalOrCustom, so it's clear what it's doing.