Use new array implementation to store slice shape information by value.

This modifies Structure's attribute access behaviour to follow Slice/Array's
item access one for aggregate values, ie. x.foo returns reference to foo, if
foo is an aggregate.