WIP: Cast VariantArrayHandle to ArrayHandle without knowing type
Previously, to get any ArrayHandle from a VariantArrayHandle, even an ArrayHandleVirtual, you had to check some finite number of types. This led us to have a pretty large set of default types to check and even then we cannot catch everything. Change this so that we can get an ArrayHandleVirtual of "any" type from VariantArrayHandle without having to know the type.
Any is in quotes above because this change necessitates a limitation on ArrayHandleVirtual to only support a limited set of value types. The types it supports must be castable to void* array and then be cast back again to one of the base C types.