Add ability to retry on caught exceptions

This commit adds the infrastructure for being able to retry
based on caught exceptions.

In order to do this, the retry interface has been extended to
include either the http response or the caught exception.

For the time being, all we retry is requests.ConnectionError.
If after retrying the appropriate amount of times we still
get an exception, then the exception is propogated.
Fix doc string
Simplify how exceptions are retried

This also fixes a bug where exceptions we don't want to retry
were not being propogated up.  Added a new test to check for this
case.
Merge branch 'socket-retries' into develop

* socket-retries:
  Simplify how exceptions are retried
  Fix doc string
  Add ability to retry on caught exceptions