feat(s3): support a custom S3 implementation/endpoint

This implements logic to handle a custom S3 endpoint and connection scheme. 

I didn't end up having the time to write tests, but this works for us using a local Ceph object gateway.

closes #131, #134