Refactored GeoQuery code to cover edge cases

- Got GeoFire running properly in node.js
- Added tests for some edge cases
- Fixed issue with “key_moved” being called at incorrect times
- Lots of refactoring in GeoQuery code to cover edge cases