Copy metadata when it is assigned to recordArrays

Currently metadata is saved on Model classes, such that there is
only ever 1 instance of the meta object in existence. Often however
metadata is a property of a particular array of records and not the
record type. A good example is pagination. It should be possible to
do `store.findQuery()` twice and get two arrays where each has it's
own meta information. However, because metadata is stored on the
Model class, any subsequent request will modify the original
pagination metadata. This commit enables each recordArray to have
it's own unchanging Meta object.