PYTHON-436 Change max_pool_size to limit the maximum concurrent connections rather than just the idle connections in the pool. Also add support for waitQueueTimeoutMS and waitQueueMultiple.
PYTHON-436 add tests for waitQueueTimeoutMS and waitQueueMultiple
PYTHON-436 line length
Restore deleted call to maybe_return_socket in test_pool_removes_dead_socket_after_request
Update the max_pool_size version-change warning
Don't name variables 'thread' in same module as 'import thread'

It seems to confuse 2to3 and causes test failures in Python 3
Now that Pool(greenlet=True) requires Gevent, skip tests if Gevent not installed
thread_util.have_gevent is more accurate than has_greenlets now

Pool(use_greenlets=True) now requires Gevent, not just greenlet
Move Pool's semaphore-creation logic into thread_util
Separate rendezvous tests from no-rendezvous tests
Spelling

This was my fault.
Style and commentary
Race condition in Counter

If a thread id or greenlet id is reused, it could get a previous thread's / greenlet's counter value
Ident.watch must always be passed the thread id

Prevent temptation to regress to PYTHON-353 by accessing a threadlocal in a threadlocal's weakref callback
Revert change that undid timeout-robustness in RSC
Pool test cleanups and reliability PYTHON-436

* Shorter thread-join timeout: If a test will fail, take 5 seconds to do so instead of 300.
* Delete unnecessary asserts.
* More reliable test_over_max_times_out.
* Skip a deadlocking test on Jython.
Update max_pool_size and waitQueueTimeoutMS docs
MongoReplicaSetClient.refresh always gets a forced socket
Ident refactoring
Fix test_pool_removes_dead_socket_after_request