Relatively significant changes that implement the copy() and freeze()
commands in the language, both of which create deep (all the way to the
ground) copies of objects

Updates to the Array<T> type were required, including the addition of a
special ArrayClass class object for Array<T> objects.  In addition to
specifying the generic parameter T, it includes a special internal
parameter which specifies type layout inside the object.  This internal
parameter differentiates Array<Array<int>> from Array<int[]> which
expose identical external methods but differ in terms of storage.