Experimental pure-Ruby version of Fiber.

This version uses a pattern more similar to MRI than the old
native implementation in JRuby 1.7.4.

Each Fiber has a 1-wide queue used only for receiving values from
resume or transfer. A resume pushes a value on to the target
fiber's queue and then waits on the calling fiber's queue. This
avoids the complexity of using the same queue for putting values
into the fiber and getting them back out. Yield works the opposite
way, putting a value on the resumer fiber's queue and waiting on
its own queue.

The contents of the fiber -- specifically its queue and thread --
are decoupled as a separate data object. The thread that pumps the
fiber only sees that data object, allowing the fiber object to
become GCable if it goes out of scope. When the fiber object GCs,
its finalizer attempts to shut down the queue and the thread,
allowing abandoned fibers to eventually clean themselves up.

This implementation is on as of this commit, but may be off by
default for 1.7.5. In any case, the property to change is
jruby.fiber.native=false|true to select the ruby or native version
of fibers, respectively.

Note that this implementation is not necessarily more functional
(yet) than the pure-Java version, but it is simpler and allows for
GC cleanup of abandoned fibers.
Bump jsr292-mock to 1.0.