This patch aims to generalize matching of the strided store accesses to more general masks.

The more general rule is to have consecutive accesses based on the stride:

[x, y, ... z, x+1, y+1, ...z+1, x+2, y+2, ...z+2, ...]

and for each start element in each stride (x, y, ... z] to be aligned.

However all elements in the masks need not form a contiguous space, there may be gaps.

As before, undefs are allowed and filled in with adjacent element loads.

Note this patch is not final, but I would like to get feedback on the approach.

There are at least the pending TODOs.