Retransmit unacked messages if connection went down and then comes back up.
Minor refactor, specific subclasses of MessageSendBase should provide their own connection timeout handlers because they may require different mechanisms to reconnect.
Added in a mechanism for retrying connections that fail.
Changed signature of tcp connection: we only want one tcp connection between two cohorts.  To ensure this, we say that the cohort with the lower id will listen for connections and the cohort with the higher id will bind to those connections.
Forgot to update state of connection when reconnecting.
Minor refactor: instead of keeping track of whether to retry in multiple places, just exit loop early.
Some TCP connections listen for connections instead of trying to create them directly.  This is to prevent having multiple tcp connections between cohort hosts simultaneously.
Automatically decide whether to listen for or connect to opposite cohort server.
Added locks around setting socket.  Will allow multiple threads to reset it --- will need at least a thread in connection_specific_send_message to reset it.
Added tcp specific mechanism for sending messages to other side.