Merge branch 'class_marshalling' into 'ibm-trunk'

Class marshalling

Sorts out conversion of Class to ClassDesc during marshalling and ClassDesc to Class during unmarshalling.

Also correct ArrayValueDescriptor so that ValueDescriptor.writeReplace is called for each element in the array.

See merge request !47