Don't struct-promote opaque vectors
The hardware vector types: `Vector64<T>`, `Vector128<T>` and `Vector256<T>` are declared
as having one or more fields of `ulong`. However, the JIT shouldn't be promoting these
fields to local variables. It is almost never the right type, and the intrinsics in any
case are not designed to cooperate with promoted fields (i.e. an index of a `Vector<ulong>`
won't map to the promoted lclVar).
Most importantly, it causes all copies of the vector to be done as 64-bit integer loads
and stores.
Finally, it will be important, as we support vector ABIs, to distinguish the handling of
the fixed-size vectors (`Vector2`, `Vector3` and `Vector4`) which *are* considered to be
normal structs of N floats, from the opaque types which will be passed in vector registers.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f06134ed869442f28cb0ab47ef2372d539a7e5af