Removing deleted records from RecordArrays is now async.

Previously filtered record arrays were updated asynchronously when records were added, but record arrays were updated synchronously when records were deleted.  This led to surprising behavior such as:

```js

myRecordArray.get('length') // => 2
myRecordArray.invoke('deleteRecord');

// we didn't delete everything, because we mutated the record array during iteration
myRecordArray.get('length') // => 1
```

Now all record array updating goes through the same code path.

-- David J. Hamilton & Stefan Penner