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.
Implementing storage regression tests to match gcloud-node.

Note meant to be merged. Some missing features were
uncovered or hard to use APIs and I want to discuss here
and then map out the plan (i.e. how to break this up).