Added generation and metageneration conditionals to set_* key functions.

* Adds two new parameters, if_generation and if_metageneration, to Key.set_contents_from_* methods and Bucket.set_acl.
* Adds tests for new if_generation and if_metageneration parameters.
* Refactored common test case functionality into a base class to avoid all the copy/pasting.
* Added retry logic to test case tearDown function to mask 503 errors during bucket/object deletions, ensuring that tests (almost) always clean up after themselves.