Do not mutate model values using key with typecast

When setting an array key with the typecast option, the array members is currently
typecasted using `Array#map!`. Since `Key#set` can be called with a models ivar as
argument this will mutate the outer state on the model.

For example if we store an array with timestamps with another time zone
than utc we will get discrepancies when accessing the models data before
and after persisting it.