use MutatingArray for returned arrays

A MutatingArray has the special property that whenever it has new values being
added to it, it will run those values through its internal array of `filters`.

```javascript
var arr = MutatingArray.create({ content: [true, true, false] });

arr.addFilter(function(item) {
  return item === true;
});

// arr === [true, true];

arr.pushObject(false);

// arr === [true, true];
```

This makes it *much* easier to filter things in actions like `afterModel` in an `Ember.Route`:

```javascript
// Only items with a `foo` of `"bar"` will make it into the model. This includes items that
// may be added after the background AJAX request completes.
var MyModel = RestModel.V2.extend().reopenClass({
  filters: [
    function onlyBars(item) {
      return item.get('foo') === 'bar';
    }
  ]
});
```

I'm going to merge this in, but still consider the feature "experimental" and subject to change. I'm not sure what the value of it is beyond my own specific use case for it.