Allow configuring putObject options when saving to S3

I needed this to be able to control `CacheControl` headers returned from S3 (it makes a lot of sense when you serve images from S3), but it can be used for setting other options as well (e.g. `ContentDisposition`)
what about `put_options` name. It would be better to rename `url_options ` to `get_options` but we can due BC promise.