Add tests for requests_with_backoff

Test get and post
They should proxy to python core requests.request
They should sleep on 503s, 502s and 403s (we test this with a response
generator which generates 2 bad responses and then 1 good and by mocking
sleep and expecting sleeps in between calls)
They should throw the raise_for_status exceptions after MAX_RETRIES
retries (5)
They should throw exceptions immediately on unrecoverable errors (e.g.
404s)
Implementing requests_with_backoff

This causes the test in the previous commits to pass
requests back off exponentially on potentially recoverable errors
, doubling from 10 seconds up to 5 times
Write should use backoffs

This changes the write to backdrop tests to expect calls on the requests
with backoffs module rather than the core python requests module
write does use backoffs!

This causes the tests that write uses requests with backoffs to pass
Make pingdom collector use requests_with_backoff

This tests that pingdom requests through requests_with_backoff
it ensures that pingdom has access to requests.exceptions through
requests with backoff
it ensures that pingdom actually uses requests with backoffs
docstring for _request_and_assert, response generator inside

Rob requested more clarity for the generic assertion code
Also, the generator is only used in _request_and_assert