a better default executor for s3

The default thread pool is not well chosen for the default case. Instead, a fixed size pool with an unbounded queue is used. This mirrors the default chosen in the AWS Java SDK for other async clients.