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)').
For a lot of keys this could be a quite massive result.

What if instead we have a flag, i.e. `return_failures=False` which
- when set will make the code both catch the `NotFoundError` and append to a list of only failed deletes
- when unset will just let the `NotFoundError`s through