Title: Multipoint Considerations

# Network size
    
The general disadvantage of this topology is the number of connections
required.  The number of connections for the network of servers is equal to
`(n * n - n) / 2`, where n is the number of servers.  For example, with 5
servers you need 10 connections, with 10 servers you need 45 connections,
and with 50 servers you need 1225 connections.	This is of course the
number of connections across the entire network, each individual server
only needs `n - 1` connections.
    
The handling of these sockets is all asynchronous Java NIO code which
allows the server to handle many connections (all of them) with one thread.
 From a pure threading perspective, the option is extremely efficient with
just one thread to listen and broadcast to many peers.	
    
# Double connect
    
It is possible in this process that two servers learn of each other at the
same time and each attempts to connect to the other simultaneously,
resulting in two connections between the same two servers.  When this
happens both servers will detect the extra connection and one of the
connections will be dropped and one will be kept.  In practice this race
condition rarely happens and can be avoided almost entirely by fanning out
server startup by as little as 100 milliseconds.
