redo the array class using reference counters

the default behavior is to wrap existing memory.  an explicit call to
Array::copy() must be made to copy the data.