add `--threads` param
add fdevents module

This module add a new cross platform event poller to gunicorn. It allows
you to listen on different fds in an efficient manner.

On linux it's using epoll, bsd/darwin kqueue...
add missing gthreads worker
fix the fdevents module
fix ThreadWorker
fix keepalive
fix PollPoller
fix kqueue poller.

this change initialise the event loop after the process has forked so we
make sure to inherit from the file descriptor.

Also fix the number of events we are waiting for. The python
implementation requires a positive number.
compatibility with python 2

Add support of the threaded worker on python 2.7. python 2.7 has no
futures module. With this change the compatibility module is installed.
reuse the code
reuse asyncio code in the threaded worker
refactor the gthread worker for a better usage of asyncio

we have the possibility to pass a data payload to the poller when
registering a file object. We are using this possibility to pass a
callback. the callback will either accept or handle a connection when
the read event is triggered.

while I am here make the future result asynchronous so we don't block
the I/O event handling.
make the code simpler and fix issue with ab
some quick optimisations
fixes
fix timeout and socket ssl wrapping
improve worker shutdown
fix doc
remove useless code
Guard against race condition on threads keepalive

Requests after the first on a keepalive connection remove themselves
from the keepalive timeout queue. This presents a race condition where
the main thread might try to access the first element of the queue
after it has been removed.