s3: reorganized error handling code and ensured that XML errors would only be parsed in the case of a non-20X response
s3: improved error messages
s3: added support for exponential backoff and S3_RETRIES env var
s3: misc adjustments in error reporting
s3: allow infinie retries when using -1
s3: prevent infinite retries and limit the amount of seconds to 384
s3: ensure retry delay is never 0
s3: fixed output of body
Merge branch 's3-error-handling'