callbacks: new infra for working with callbacks

The gruvi.callbacks module implements a data structure (linked list)
and functions to work efficiently with callbacks.
futures: new functions: wait(), as_completed()

These functions are modeled after their asyncio equivalents. They allow a
single fiber to wait on many different "waitable objects".

Fixes #10.
Drop support for Python 2.6!
docs: clarify that proactor means IOCP
sync: make Event() follow threading API for timeouts
fibers: remove a superfluous threading check
various: protocol cleanups
tests: make it faster
logging: pass keyword arguments to logger

This allows printing exception info at any logging level by adding the
exc_info=True parameter.
futures: thread safety and cancel()

Bring our future implementation more up to par. Futures are now thread safe
(needed for ThreadPool) and can be cancelled. Also improved the docs.
fibers: small nitpick