split IServer into IServer and IClusterableServer, one for public consumption and one to facilitate internal consumption.
remove WaitQueueTimeout from connection pool settings and added timeout and cancellation token support into IConnectionProvider and IServer.
changed waitQueueSize parameter to maxWaitQueueSize.
added timeout and cancellationToken support to ICluster.
removed connect timeout as it now is passed as an argument to the ICluster.SelectServer method.
fixing DefaultConnectionProvider and tests.
Fixing up tests and fixing bugs in server selection due to infinite timeouts.
added Initialization to most connection classes such that we don't get into the problem of calling virtual methods from constructors. This caused a number of other changes.  In addition, fixed up tests to be independent of actual classes such that testing is completely isolated.