Added array and error decoration

Array decoration allows metadata properties set on an array during transformation to be copied over to the resulting data. This allows us to do things like add pagination metadata to the result array.

Error decoration allows metadata properties set during transformation to be copied over to the resulting data, on error, without removing existing, non-conflicting properties. This allows us to do things like creating am 'error' property on an existing model, without losing the model's existing property values.