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.
Use ACL-specific endpoints where feasible for buckets.

- Refactor lazy-handling of 'acl' and 'default_object_acl' using properties.

- Fetch 'ac' and 'defaultObjectAcl' via GET to specific endpoints.

- Continue to update 'acl' and 'defaultObjectAcl' via PATCH to the object's
  resource (we can't do incremental updates to ACEs).

Fixes #163.
Use ACL-specific endpoints where feasible for keys.

- Refactor lazy-handling of 'acl' using a property.

- Fetch 'acl' via GET to a specific endpoint.

- Continue to update 'acl' via PATCH to the object's resource (we can't do
  incremental updates to ACEs).

Fixes #151.
Fix save/clear ACL operations.

Borked by dropping the 'projection' qs param to PATCH.  Docs spell
a default, but then note that overriding it w/ 'full' is required
(and we need 'full' anyway, because we expect to read the resulting
ACL back).
Move APIs for reload/save/clear ACLs onto ACL objects themselves.

Fixes #324.
Document semantics of upload to existing key.

Point to the 'object versioning' and 'lifetime' specs for details about
how to override the default (overwrite unconditionally).

Fixes #162.
Merge pull request #312 from tseaver/161-bucket-delete_keys-useful_result

Fix #161: Make 'Bucket.delete_keys' take an 'on_error' callback
Rename 'dirty'->'save_to_backend'.

Drop unneeded comment.

Feedback from @dhermes.
Use 'add_entity' directly when populating from scratch.
Improve class attr name: '_SUBKEY'->'_URL_PATH_ELEM'.
Document how 'NotFoundError' propagates.

Describe suppressing it via 'bucket.delete_keys([key], on_error=lambda k:None'.

Fixes #160.
Document further how 'text' vs. 'bytes' values are stored.

Note how the two differ in Python2 vs. Python3.

Fixes #266.
Think-o:  'bytes_value' -> 'blob_value'.

Incorporates feedback from @dhermes.
Merge pull request #327 from tseaver/162-document-key-upload-overwrite-semantics

Fix #162:  Document semantics of upload to existing key.
Merge pull request #326 from tseaver/324-move_acl_manip_from_bucket_key_to_acl

Fix #324: Move ACL back-end manipulations from bucket / key to acl objects
Typo:  no star-arg required.
Note source of exception.

Incorporates feedback from @dhermes.
Merge pull request #328 from tseaver/160-doc_avoid_notfound_when_del_key

Fix #160:  document how 'NotFoundError' propagates.