Plat 355 s3 with http client

This change refactors the S3 code "conservatively", in that it takes the existing code and only touches the parts that are required to obtain a version of the code based on HttpClient.
Additionnally, some cleanup has been performed:
* S3Api::download and S3Api::upload have been refactored to make use of the exact same code as StreamingDownloadSource and StreamingUploadSource
* S3Handle, which was never used, has been removed
* The code now make use of classes exported by other modules
* The propagation of exception pointers is now thread-safe