Allow data to be stored on GeoFire Index

I've updated the code to allow optionally adding a data element onto the GeoFire index. One new method was added "getWithData" to keep the existing "get" method backwards compatible. The "key_entered" and "key_moved" callbacks have been enhanced with a new data parameter which will be populated if data was stored on the index, otherwise it is null.

I also added .catch() statements to all of the unit tests dealing with promises. The common error handler will fail the Jasmine test and show the stack trace. I found this helpful when originally my tests were failing but the only indication of failure was the Jasmine ASYNC timeouts, and no obvious reasons for why the test failed. It turned out I was attempting to set a Firebase location to 'undefined', so the Firebase library itself threw an error, which was swallowed by the RSVP promise.