This revision updates the op semantics, printer, parser and verifier to allow 0-d transfers.
Until 0-d vectors are available, such transfers have a special form that transits through vector<1xt>.
This is a stepping stone towards the longer term work of adding 0-d vectors and will help significantly reduce corner cases in vectorization.
Transformations and lowerings do not yet support this form, extensions will follow.
There could be some ambiguity with broadcasts, which are also encoded with zeros.
Maybe an affine map with no result would make more sense, since we actually have no dimension in the 0D case:
affine_map<()->()> or affine_map<()->(0)>
Not sure if this valid though...