Update methods to Firebase 2.0.x

@katowulf - This is a backwards-compatible solution to upgrade AngularFire to 2.0.x without having it throw any deprecation warnings. Unfortunately, we cannot polyfill `DataSnapshot.key()` since we do not publicly expose `DataSnapshot`, only `Firebase`. As a result, I had to add these helper methods to use `key()` if it exists, or otherwise use `name()`. We need to make sure that in the future, we are aware that we cannot do things like `snapshot.key()` or `snapshot.name()` and instead need to use `this._getSnapshotKey(snapshot)`.

The good news is that this is literally all we need to do to achieve backwards compatibility. We don't use the deprecated `limit()` method internally and all other methods are already backwards compatible.

cc/ @davideast 
Comment this and explain why it exists? (that we we won't wonder what it was here for in a year) Might also want to //todo it so we can remove it later.