Retry

Reference PR, as mentioned in the last commit

No tests, no docs, etc, just trying to push through this to see what the
logic's like. Some things I don't like:

- it's fairly repetitive, we call increment/exhausted every time there's an
  error, and once when we have a response.
- checking the response twice, once in increment and once in is_retryable
- calling _connect_error_count from outside the class
- conflict between individual retry and total retry values causing tests to
  fail, need to nail down this behavior
- setting default timeout for a specific test instead of all of them