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
acu85369 - using Timeout::Error instead of Net::ReadTimeout. Added more specs.

using Timeout::Error instead of Net::ReadTimeout
because Net::ReadTimeout is available yet in ruby 
1.9.2's stdlib.

starting the fiber idx counter at 1 instead of 0.
acu85369 - removing & detaching the correct handler on unbind

When detach is called on a handler, unbind gets called
asyncly.
If a new handler gets created for the same fd, then
the unbind can detach the newly created handler.

Instead of detaching whatever handler is currently
mapped to the fd, we check if the handler matches
before removing the handler and detaching it.
acu85369 - added method to return stats about NB. Added method to get size of EM.many_ticks queue
acu85369 - handling timeout_class == nil

in 1.9.2, ruby passes nil as the timeout class if
no timeout was passed  (ex: /usr/lib/ruby/1.9.1/timeout.rb:89:in `timeout' )
As a result, we are defaulting to to Timeout::Error
so that we can timeout the fiber by passing the
exception.
acu85369 - Overriding timeout of Deferrable to delay the timeout by one tick.

Delaying calling fail to the next tick since EM 
checks timers first, then IO, then next_ticks. So,
if an IO is ready but the timeout's timer is also 
ready, the timeout would win.
acu85369 - bumped version to 2.0

since behavior of timeouts will change with this 
version. Only timeouts on watches apply and others
are ignored.
Merge branch 'orange_13_6_acu85369__dme_dane__nb_action_specific_timeouts'