Allow VariantArrayHandle CastAndCall to cast to concrete types
When you call VariantArrayHandle::CastAndCall, it now tries both basic storage and virtual storage. You can modify the types of storages tried by giving a type list of storage tags as the first argument.