[socketpair] make it work on Unix too

This is sometimes helpful. I needed this in the Bluepass test suite.
A real socketpair has an empty getpeername() and getsockname().
[logging] add with_context() and format tweaks
[refactor] move objref() to logging module
[futures] give threads a descriptive name
[logging] use $DEBUG to enable stack information
[logging] tune log format
[logging] show a fiber context
[refactor] move fixup_format_string() to compat
[jsonrpc] fix test for JSON-RPC v2.0
[ssl] add SSLPipe.close()

Provide for a way to close the pipe file descriptors.
[logging] new function: get_log_level()
[tests] test suite improvements
[sync] reduce memory usage significantly
[sync] improve Signal.wait() API
[sync] improve docs
[logging] small improvements
[sync] remove Signal.callbacks and Signal.waiters

This API is only used by the tests so I don't want to expose it as public.
Instead have the tests look at the _callbacks property.
[refactor] align object model with PEP-333

Previously Gruvi was not fully implementing the PEP-333 object model. We
had a Transport class which was very similar, but the Protocol was more
similar to a Server instance in that it could server multiple client
connections.

With this change, Gruvi is much closer to asyncio:

 * The Transport class follows the PEP-333 API. Transports are no
   longer pyuv Handle instances, but they are their own class that wrap
   a pyuv Handle.
 * The Protocol class follows the PEP-333 as well. There is one protocol
   per transport.
 * There is a Server class wich is similar the one in PEP-333. In
   addition to the PEP, it has a listen() method, which in essence is a
   wrapper around create_server().
 * There is now a Client class which does not exist in PEP-333. It
   contains a connect() method which is a wrapper around
   create_connection().
 * The synchronization primitives are also aligned with PEP-333 and
   the threading module. The bespoke Signal object was removed, and
   Event and Condition were added.

This change also weaves in a few other changes that were difficult to
separate out due to the invasive changes:

 * We now use "six" again instead of our own "compat" wrapper.
 * There's an upstream update to "txdbus", which includes some of the
   new Python 3.x support.
 * The DBUS CFFI splitter was removed in favor of a much simpler Python
   version.
 * D-BUS authentication has been much improved and now uses the
   authenticator from "txdbus".
 * SSL context support for Python 2.6/2.7 has been added. This code was
   originally part of Bluepass, but it makes sense to have it in Gruvi.