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
set to true.
test($resource): add spec for dataKey feature.