Add failing test for retries on putTile GETs.
Fix infinite retry bug.
Refactor retry function and add unit tests.
Add failing test for PUT timeouts.
Remove duplicate error.

Calling req.abort() after a timeout causes the socket to be closed,
which emits an error on the request. Emitting another error causes the
callback to be invoked twice.

This has an especially bad interaction given the retry behavior - for
each failure this code would retry twice. Multiple failures would cause
retries to cascade rapidly.
Remove complete conditional.

I am not seeing a condition where the request will timeout after it has
completed.

Essentially reverts b1466adfb27ce0c508ca94ac394244e7e27412a6.
Reduce timeout for PUTs.
Reduce number of retries.
Add test for server closed connection.
Add test for HTTP level failure.
Parse error code from S3.
More complete solution to multiple callback problem.

Refs 9d6f6ef89c75384ffda5aa086a70af25484661fb.
Increase retry to 5.
More buffer around retry test.
Merge pull request #32 from mapbox/error

putTile error refactor