DXHTTPRequest retry loop: obey timeout

@psung, please take a look.
This really only guarantees you will return after `2 * timeout`, since you allow `timeout` on each attempt regardless of how long previous attempts took. To better bound the total amount of time taken, this could be changed to `time_started + timeout - time.time()` (but, to be fair, if the route itself returns quickly the difference is irrelevant).