switch_back: new method: add_cleanup()

The method add_cleanup() allows you to run a cleanup action when the
context manager exits. This patch also adds some small improvements to
the docs.
getaddrinfo(): cleanup the request when done

It is needed when there is a timeout, but there doesn't seem to be any
ill effects calling request.cancel() always.
getaddrinfo(): add tests
setup.py: list Python 3.4 as supported
Pool: implement "timeout" argument for map()
Hub: small naming tweaks
Hub: show traceback for exceptions in pyuv callbacks
create_handle(): new utility function
Remove completed TODO items.
add_protocol_method() refactor
StreamReader: simplify and add readexactly()
Process: new class
Fix locking issue in PoolBase
Check for leaked handles in tests.

After every test, make sure that there are no leaked handles that can
wreak havoc on future tests.
Fix issue with perf_fibers test.
runtests: allow specification of multiple suites
Ignore another whitespace error.
Fix race in test_hub.py
[docs] ignore build error for now
pyuv now exports the "Stream" base class