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:

https://llvm.discourse.group/t/understanding-the-vector-abstraction-in-mlir/

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.

Thanks!

Diego