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.
Move building start, end and filter into query object

@pbadenski
@gtrogers
Move execution of query from Bucket to Query

@pbadenski
Query#execute... methods should be all private

@gtrogers
@pbadenski
WIP - pull out response object
Add test for non _ fields getting serialized correctly
Use Datum for simple filter query

@gtrogers
@pbadenski
WIP: Add PeriodData
WIP - wrap period data in collection object
WIP - use timezone when indexing times
WIP - use period_data for period queries
Replace Datum with a container object

@gtrogers
@pbadenski
Extract source code from tests

@gtrogers
@pbadenski
Introduce WeeklyGroupedData response

@gtrogers
@pbadenski
Fix pep8 warnings

@gtrogers
@pbadenski
Wire WeeklyGroupedData with Query

@gtrogers
@pbadenski
Fix small bug and delete unnecessary code

@gtrogers
@pbadenski
Query always returns Response objects

@gtrogers
@pbadenski
Create response directly from mongo result

@gtrogers
@pbadenski
Merge pull request #65 from alphagov/pull-out-query-object

Pull out query object