Pull out query object

- replaced a dict with immutable query object,
- moved a mongo_query to Repository,
- simplified and unified Bucket#execute... methods to use a single
      "query" parameter,
- introduced *Data objects to encapsulate response logic.