acu75606 - added yield method

since it is awkward to use sleep when you really
want to just yield to a different Fiber. Also,
sleep(0) does not actually yield.
acu75606 - giving other busy fibers a chance to do work before handling the next work unit.
acu78070 - Attaching timeouts to watches directly instead of tracking them separately

Attaching timeouts to watches so that we can keep
track of which action a timeout belongs to. When
triggering a timeout, it is obvious which action
needs to get canceled. If Timeout.timeout is used
for multiple IO actions, the specified timeout
will apply for each action and not for both actions
together. If a Timeout.timeout is used for non IO
actions, the timeout is ignored.

Using the class passed to timeout: method timeout
accepts argument klass to specify what kind of error
should be raised in case of a timeout. This argument
was ignored and a Timeout::Error was always raised.
Fixed the code so that the passed error class is used when
provided.

Ensuring next tick will be scheduled: If @tick_queue.shift.call
raised an exception, we would not schedule the next tick
nor would we reset tick_queue_running to false. As a result,
the scheduling of the current tasks as well as any tasks added
to the tick_queue will never be processed.
This code change ensures that we schedule the
next tick or set tick_queue_running back to false.

fixed many_ticks by cleaning up its state between runs.
If a tick is scheduled with EM.many_ticks and EM is stopped and
started again. EM.many_ticks' state is not cleaned up and when EM
is restarted. The scheduled EM.many_ticks tick wont ever be run
because EM has been stopped. Any new ticks scheduled with EM.many_ticks
wont ever run because EM.many_ticks thinks that a tick is still pending.
acu85369 - bump version to 1.1