Retry s3 multipart close

@arsham-f @gregr Please have a look at this. The only commit I intended to include is the most recent, have to sort out why the rest are being included here.

This aims to have the s3util package retry when an S3 multipart close fails. Previously I was attempting to do this in the media service without realizing it'd always fail due to this package first checking if its channel is closed and closing it before other failures might occur. This meant that retries were never going to succeed.

I've left this blind to the types of errors that might occur during closing and the fact that some may be unrecoverable because at worst we spend an extra second retrying something with no chance of success; it's not worth additional complexity to only retry requests that might succeed.