Added SingletonSupplier helper for creating Suppliers out of existing objects.
Added a global Timer instance to the Environment for scheduling delayed maintenance tasks.
Tweaks to the throughput test.
Added reconnection logic to TcpClient. When creating a client, the user can now specify an implementation of Supplier<Reconnect> to provide that will determine how, when, and to where reconnections should happen. The Reconnect allows for specifying different hosts to connect to in cases where you're connecting to a cluster.

The reconnection happens internally, inside the TcpConnection implementation, so no other events are triggered yet when a reconnection happens. Existing Streams are reused, so no new Consumers need to be reattched, though the behavior of losing a connection in the middle of a write is as yet undefined. That's more a concern of a Retrier rather than writing an entire Buffer blindly.
Merge branch 'reconnect'