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.
`CMConnSucceeded` serves no purpose and in fact can result in undesirable concurrent connection attempts. It is issued at the point the TCP connection has been established. But that is a long way before we declare the connection as 'established'. And it would be undesirable to attempt further connections to the same address until that has happened.

When we have fully established a connection to a peer, then on the next tick the entry for that peer will be removed from failedConnections. So no garbage is left behind.