Fixes T5155. Add a native S3 client that can be used instead of the current external used in rP. This generally gives us a lot more flexibility in how we in invoke the API and allows us to use more advanced features, such as IAM instance profiles.
This diff includes the following changes (I can break this down into smaller chunks if preferred, but seeing as testing this stuff is tricky and manual, it made sense to just lump everything into a single diff):
- Add support for instance profile credentials to the PhutilAWSFuture class (enabled with ->setUseIAM(true)).
- Add SSL support to PhutilAWSFuture (enabled with ->setUseSSL(true)).
- Add a bunch of methods to the PhutilAWSS3Future class.
- Add a PhutilAWSS3Client which provides around PhutilAWSS3Future and provides a (more convenient) API.
- Marked a bunch of methods from the PhutilAWSFuture class as final.