Makes return type for array property values consistent.

Array property values would be returned either boxed or unboxed, depending
 on whether they were inlined or not and how they were passed in. Now they
 are always returned as primitive arrays.
Null values in arrays are detected and NPE is thrown.
Array values are copied and stored in cache so changes in the value
 from usercode are not reflected in the property value even before commit.

Tests for the above.