Improve initial connection and retries

This fixes #23 by having main re-use the code for failed connections, and #26 by having ConnectionMaker keep track of currently-in-flight connection attempts.  Also we use that info to improve the status slightly.
does that mean initial connection attempts can be delayed by up to one second? I'd rather they weren't. Indeed generally I reckon first connect and reconnect attempts should happen immediately. Though perhaps that a separate bug.

Also, surely the 'tick' interval needs to match this value. If so, that should be enforced in the code.