Support more AWS credentials providers for S3 storage

Build an AWS credentials provider chain that looks for credentials in this order:

* ConfigDrivenAwsCredentialsConfigProvider - the existing druid configuration file (accessKey+secretKey)
* LazyFileSessionCredentialsProvider - the existing druid configuration file (fileSessionCredentials)
* EnvironmentVariableCredentialsProvider - system environment variables (AWS_ACCESS_KEY_ID and AWS_SECRET_KEY)
* SystemPropertiesCredentialsProvider - Java System Properties (aws.accessKeyId and aws.secretKey)
* ProfileCredentialsProvider - Credential profiles file at the default location (~/.aws/credentials)
* InstanceProfileCredentialsProvider - Instance profile credentials delivered through the Amazon EC2 metadata service
Can you explain the need for this lock in more detail?