fibers: add .alive property.
tests: move create_cmd_wrapper() to support
hub: show a debug message on SIGINT
tox: add coverage target
sync: fix threading issues with timeouts

There's a couple of changes here:

 * If a timeout occurred after a lock was granted on by release() but before
   the timeout got scheduled, the lock would be acquired even if acquire()
   returned with False.
 * switch_back.__call__ can be called asynchronously and therefore needs a
   lock.
 * Many of the cleanup actions required locks.
refactor: share tests between Lock and RLock
add support.warn()