Refactored S3 request mechanism
Refactored S3 request mechanism

This way all the request data is encapsulated in the S3Request object, meaning we don't have to pass around vast amounts of arguments all the time.

leo23/simples3,lericson/simples3,sirkamran32/simples3