/*
 * call-seq:
 *   handle "event" { |event| block } -> Proc
 *   handle "event" -> Proc
 *
 * If block is given, it is called on given event. If no block
 * was given, an existing handler is uninstalled. The handler is
 * only called, if Stream#wait is called. If the block
 * evaluates to false, the event is considered not handled and
 * will passed to Stream#wait. Only one handler can be installed 
 * for each event.
 *
 * Returns the Proc object of the block installed.
 */
static VALUE xs_on(VALUE self, VALUE event_id) {