Make KeyError from 'get_metadata' more flexible.

Allow subclasses to define a 'CUSTOM_METADATA_FIELDS' mapping which
maps field name -> accessor name, and use it to generate more meaningful
error message when raising KeyError for those fields.
Merge pull request #339 from tseaver/get_metadata-map_accessors

Make KeyError from 'get_metadata' more flexible.
Add lifecycle support to buckets.

See: https://cloud.google.com/storage/docs/lifecycle and
     https://cloud.google.com/storage/docs/json_api/v1/buckets

Addresses 'lifecycle' part of 314.
Adding extra parameters for querying Cloud Storage keys.
Testing interaction with page token and extra params in iterator.

Also making sure tests pass by using the `upload_` prefix
instead of the `set_contents_` prefix.
Using {} as default in iterator for extra_params and get_query_params.
Updating docstring in Iterator.get_query_params.
Merge pull request #343 from tseaver/314-bucket_lifecycle_support

Add bucket lifecycle support
Merge pull request #332 from dhermes/add-params-to-key-iterator

Adding extra parameters for querying Cloud Storage keys.
Ideas commit for better (implicit) auth story in datastore.

Also
- Integrates this idea into the datastore regression tests.
- Creates a (temporarily ignored) cyclic import
- Has an uncovered statement that confuses nosetests
- Implements a friendlier (more gcloud-node like) version of
  allocated_ids
- DOES NOT update CONTRIBUTING to explain change to regression
  tests or ditch unneeded helper / environ code for regressions
- Creates a datastore cleanup script for when tests get
  broken