handle errors during multipart uploads

Now that we're sending the Content-MD5, S3 could return a BadDigest
error.  We should catch and retry that.  There are a few other
retryable codes, including 503 SlowDown, that we should obey too.