PLAT-355: S3 code now single threaded

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/StreamingDownloadSource and S3Api::upload
    /StreamingUploadSource have been refactored
  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
Merge branch 'master' into PLAT-355_s3-with-http-client