Added retry mechanism for S3 connection errors

Closes #95
In Azure project, I named this with `cloud.azure.api.impl`. Wondering if we should either rename here to `cloud.aws.s3.api.impl` or rename in Azure project to `cloud.azure.api.type`.

If we already used `type` in elasticsearch core code, my vote goes for the later. WDYT?