Add util.Timeout.__str__
Add better test coverage

I am unsure how to test _tunnel(). Fixes some bugs
uncovered by more robust test coverage