Migrate to S3 Transfer Manager

TransferManager handles small files as normal uploads, since it takes a
PutObjectRequest.  If the file is beyong a given threshold (default
16MB), it will be split into a Multi-part Upload.  The
S3ProgressListener moves from the PutObjectRequest to the Upload object
obtained from TransferManager#upload.  Do not put it on both the
PutObjectRequest and the Upload because duplicate messages will be
processed!

The S3ProgressListener was enhanced to emit multi-part-related messages
as well as start/complete messages for the entire transfer.