Compile ArrayGetValues implementation in library
Previously, all of the
ArrayGetValues implementations were templated
functions that had to be built. That meant that any code using them had
to be compiled with a device compiler and create special code for it.
This change uses an
UnknownArrayHandle to encapsulate the
ArrayHandle and call a per-compiled library function. This means that
the code only has to be compiled once.