Reject keys that are not strings
WIP: Add bucket repository and check for existence

Add a bucket repository and a new bucket domain object. Use these to
check if a bucket exists when using the read API. This includes changing
a lot of tests to set up buckets before they can be used.
Allow raw_queries_allowed to be set on new Buckets

Defaults to false. Update tests.
Remove unnecessary raw_queries_allowed method
Refactor parsing of filter_by arguments
Rename MongoDriver.connection to be more accurate

It is actually returning the underlying pymongo.Database instance.
Merge branch 'master' into automate-creation-of-buckets-55989156
Move new bucket class into existing bucket module

The existing bucket (that handles querying and storing) will not be
factored out just yet. With this story we are just introducing
bucket configuration being stored in the database.
Refactor BucketConfig to be a namedtuple

Less code, more like Query.
Add bearer_token to BucketConfig
Add upload_format attribute to BucketConfig
Fully implement BucketRepository save

- Require bucket to be an instance of BucketConfig
- Save all fields on the bucket to the database

This is safe because we are dealing with a named tuple so unexpected
fields can't find their way in.
Add upload_filter to BucketConfig and persistence
Remove unused filter function
Push config to create parser instead of its attrs
Add auto_ids to BucketConfig
Construct Bucket from configuration
Failing feature for new query data point
Rename test for clarity
Integration test for saving a bucket config