Fixing _.bindAll(this) call to be compatible with underscore >= 1.5.0

Documentation regarding the change here: https://github.com/jashkenas/underscore/issues/992, here: https://github.com/jashkenas/underscore/issues/1033, and here: https://github.com/jashkenas/underscore/commit/bf657be243a075b5e72acc8a83e6f12a564d8f55

From what I can tell, the _.bindAll() method was just to handle binding the event handlers to the instance of `Backbone.Firebase` that was being used to sync data to and from Firebase. The binding can therefore be assigned inside the .on() call, and the _.bindAll() method can be removed.
Making the `Backbone.sync` override to Firebase actually...work.

When calling `store[method].apply` in `Backbone.Firebase.sync`, the context was being set to `this` which was a reference to the Backbone Model (or Collection) that the sync was triggered from.

In order for the `Backbone.Firebase[method]` methods to access their reference to the Firebase, the context for this call has to be a reference to the actual Firebase store set on the model or collection. Otherwise variables like `this._fbref` and `this._children` are undefined and therefore cause problems.
Simplifying  Backbone.Firebase.Collection constructor

Collections bubble events from models by default, so listening to each model on a collection for add, change, and remove events as well as managing to remove the listeners for those events appropriately is more overhead than is necessary. We can simply listen to the Collection's add/change/remove event proxy, which passes the model as an argument to the callback. We don't even have to listen to the add/remove events for the models, since the 'change' event will only be triggered on models that are part of the collection.