Maintain order returned by data snapshots

- Iterate over snapshots using `forEach` to retain order.
- Use OrderedMap instead of Map for bindAsObject