This patch is the first of a short series that aims to extend Affine dialect
with vector memory semantics. Further context and details can be found here:
In particular, this patch adds affine.vector_load and affine.vector_store ops to
the Affine dialect and lowers them to vector.transfer_read and
vector.transfer_write, respectively, in the Vector dialect.
Subsequent patches will add new interfaces for affine load-like and
store-like ops (already implemented locally), port affine fusion to
these interfaces as an example (already implemented locally), and
extend affine analyses to deal with vector semantics (WIP, may need
some help :)). Some refactoring may also be needed.