Improved the generic copy mechanism for value types

Copying arrays and vectors of complex types requires a more specialized
method to handle the data appropriately than the operator= function can
provide.