timed and untimed are essentially identical. Could we just have one that skips the call to `get_request_timeout(...)` if it's not timed?

Also can we encompass the relevant logic into the `Timeout` class?

Perhaps a ```python
t = Timeout(...)
current_time = t.start()
current_elapsed = t.get_elapsed()
current_elapsed = t.stop()
```