Make 'Bucket.delete_keys' return a useful result.

Result is a list of (key, success) tuples, one per requested key.

Fixes #161.

Addresses #160 (users who want to delete without raising can use
'Bucket.delete_keys([key])' instead of 'Bucket.delete_key(key)').
Make 'Bucket.delete_keys' take an 'on_error' callback.

If passed, the callback will be called once for each key not found,
with the offending key.
Re-raise NotFound error from 'Bucket.delete_keys' if no callback passed.
Merge pull request #312 from tseaver/161-bucket-delete_keys-useful_result

Fix #161: Make 'Bucket.delete_keys' take an 'on_error' callback
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).