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.
> I would argue that reducing this initial delay is a separate issue.

It is not a separate issue for the initial connections, since currently they do get established straight away.