Add bucket versioning support

Presumes #339 is merged to master already (merged on this branch).

See: https://cloud.google.com/storage/docs/object-versioning

Addresses the 'logging' field described in of #314.
Seems that [this behavior is not unique][1]. Could we factor this into a method like:

```python
    def _get_metadata_field(self, field_name, default):
        if not self.has_metadata(field=field_name):
            self.reload_metadata()
        return self.metadata.get(field_name, default)
```
and then re-use through-out.

[1]: https://www.youtube.com/watch?v=mGuorryJSUg