Move ArrayHandleRuntimeVec metadata to a separate class
Originally, the metadata structure used by the ArrayHandleRuntimeVec
storage was a nested class of its Storage
. But the Storage
is
templated on the component type, and the metadata object is the same
regardless. In addition to the typical minor issue of having the
compiler create several identical classes, this caused problems when
pulling arrays from equivalent but technically different C types (for
example, long
is the same as either int
or long long
).