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
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
squash