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.
Edited by Kenneth Moreland