putTile error refactor

Fixes several bugs around error handing, the most significant of which would cause multiple infinite retries after each `putTile()` failure.

- Adds tests for `putTile()` error conditions
- Adds unit tests for retry logic
- Reduces timeout for PUTs from 60s to 5s
- Reduces number of retry attempts from 11 to 3
- Parses the [S3 error code](http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) for HTTP level errors