Refactor the connection management on contacts to have a goroutine responsible for tracking the state of a contact's connection, launching and canceling outbound attempts when appropriate, etc.