Refactoring duplicate code between storage.key and storage.bucket.

@tseaver We discussed this waaaay back in #238.

Let me know how much of the tests you want me to move from `Bucket` / `Key` specific stuff into `test__helpers`.
Given #313 / #314, maybe this should be a lookup into a class-attribute mapping "metadata key" -> "accessor method name"?  Iin the end, I think these methods should *only* be used to manipulate the user-set fields stored in under `metadata` key.