100% branch coverage for gcloud.datastore.helpers.

Surfaced bug w/ unknown type passed to get_protobuf_attribute_and_value().
Toward 100% branch coverage for gcloud.datastore.key.

Surfaced bug w/ path element holding both id and name in Key.from_protobuf.
Toward 100% branch coverage for gcloud.datastore.key.

Cover edge condition in Key.to_protobuf where dataset has empty ID.
Toward 100% branch coverage for gcloud.datastore.key.

Cover edge conditions in Key.to_protobuf where path elements are missing keys.
100% branch coverage for gcloud.datastore.key.

Cover edge conditions in Key.{kind,id,name} where path is empty.
100% branch coverage for gcloud.datastore.query.

Edge cases in Query.ancestor w/ existing non-ancestor filters.
100% branch coverage for gcloud.datastore.test_key.

Don't worry about path elem w/o kind.
100% branch coverage for gcloud.storage.acl.

Edge case in ACL.__iter__ for empty role.
100% branch coverage for gcloud.storage.connection.

Exercise Connection.delete_bucket w/ 'force' passed as False.
Don't derive from object w/o need.

Incorporate feedback from @dhermes.
Appease pylint E261.
Add note to 'name' branch in Key.from_protobuf.

Document that we expect only one of 'id' or 'name' to be found, but
DTRT anyway if both happen to be present.
Merge pull request #225 from tseaver/100_pct_branch_coverage

Get to 100% branch coverage