Split Connect() from ConnectAndServe()

In order to provide better logging hooks, I'd like to split out the act of connecting from the blocking call to Run(). That way I can distinguish between a hang and a successful connection.