Use GoCloud interface for S3 access
In !555 (merged), we are adding Azure blob storage support via the Go Cloud Development Kit (https://github.com/google/go-cloud), which is nice since it allows us to easily add new blob stores without changing too much.
S3 is a little bit complicated to support in this way because:
- We load credentials from the Workhorse config file, but we also receive more details of the bucket (e.g. path style, endpoint, etc.) from the Rails API.
- We load server side encryption headers. See https://github.com/google/go-cloud/issues/2802.