Early support for waiting on OS signals

The API is:

def myloop():
    diesel.signal(signum) # waits here, until signum
    code_that_runs_after_signal_happens()
Added a signal handling test
Rename _ev_timers to _ev_watchers

This is in preparation for using it for Signal watchers as well as
Timer watchers.
OS signal support for the LibEv hub

Required a bugfix to the handle_events method. Callbacks that were
getting appended to run_now were running after those that were added to
reschedule. That was happening because run_now was gettinged extended
with reschedule before handling events from the hub loop.

Like the EPollEventHub, we now do multiple iterations over run_now
during handle_events. The second pass runs any that were added during
hub loop event handling. Last of all, the callbacks that were in
reschedule are put into run_now for the next call.
Reorganize signal handling code

A bunch of stuff that only the EPollEventHub used was on the
AbstractEventHub. Now the LibEvEventHub doesn't have to inherit that
stuff it doesn't need.
Test for multiple waiters on a signal
Don't overwrite existing signal handlers

Raise an exception if something else is already registered to handle
this signal.
Simplify EPollEventHub signal handling

Callbacks are scheduled in run_now, like callbacks from Timers. This
matches the LibEvEventHub and generally properly schedules the handling
of signals.
Better EINTR behavior for the EPollEventHub

Anything that still existed in run_now will get run, instead of getting
overwritten with reschedule.
Added higher-level Signal class

It is an Event subclass, can be waited on using first and will catch
signals that were fired even when the current loop isn't explicitly
waiting on them.
Simplified Signal class internals

Doesn't need its own Loop. It now simply registers its set() method to
be called when the signal is caught by the event hub.
Added signal example
Remove unused import
Docstrings for the Signal class
Merge remote-tracking branch 'dowski/os-signals' into os-signals
Make sure to stop the PyEv watcher

Without this, PyEv 0.9 and LibEv 4.15 were segfaulting.
Test and fix for "infinite" WaitPool growth

If an app coordinated actions with wait(unique_token) calls, every
unique_token would exist in the internal WaitPool for the lifetime of
the app.

This change makes sure to clean up the tokens and related empty sets
when then are no longer needed.
Merge branch 'os-signals'