Add some missing mocked methods for snapshot

`MockFirebase` provided snapshot does not have all the methods referenced in the latest API documentation. This will add the missing methods.

Added:
- `hasChild`
- `hasChildren`
- `numChildren`
- `exportVal`

Also:
- refactored some existing code for correctness and duplication
- added some tests for `utils.makeSnapshot`

reference: https://www.firebase.com/docs/web/api/datasnapshot/