Add exponential backoff when reading from S3

Add retry logic for getS3Object and getS3ObjectMetadata
Add exponential backoff when doing retries
Update aws-java-sdk to 1.7.1, which fixed the integer overflow bug in 1.6.x