Add timeouts for router

* fixed ContentLength logic
* converted refresh to ticker

TODO: 
* add in sync.Pool for http.Clients
* convert to sync channels

Maybe change test to have a buffer of 1? (your original paranoia, well served :grinning: )

That way if we time-out right at the instant it actually did deliver... alternatively, maybe bump up the timeout a wee bit past those two timeouts combined just to try and make absolutely sure that no goroutine is left out there waiting to indicate it was delivered.

Or one more alternative, which might be the best, put a timeout on feeding the 'true' value into the test channel of a fraction of a second, after all, if the other side is gone, no point waiting forever to put it in.