feat($resource): add support for resources wrapped or with metadata

if dataKey is present, the resources will be pulled from response.data[dataKey]
and all other values in the response will be copied over to the $resource
collection object.

For example, given:

query: {
  isArray: true,
  dataKey: 'items'
}

and the following JSON response:

{
  page_size: 3,
  page: 1,
  total_items: 1900,
  items: [ { ... }, { ...} , {... }]
}

Items.query() would return an array of the 3 objects inside the items array,
while the Array itself would have page_size, page, and total_items properties.

The dataKey option is valid with both isArray: true and isArray: false, however
metadata is only copied over when isArray is true.