Support all Allocate flags in UnknownArrayHandle
UnknownArrayHandle supported an
Allocate method to change
the size of the underlying array without knowing its type.
However, it did not give all the features of
allocate. Namely, you could not specify that the data should
be preserved and you could not provide a
Token object. This
change adds these (optional) parameters.