Add a reference from the readme to Ione::Rpc
Optimize FutureFactories to create fewer objects

* .all and .first do not create a CombinedFuture if it only gets one argument, and instead just return the argument
* .resolved with nil no longer creates a new object but returns a global nil future (ResolvedFuture::NIL)
Version bump to v1.1.1
Fix a bug in Future.all

When only a single future is given there is no need to create a CombinedFuture, but the future still needs to be transformed into something that resolves to a list.

Add a test for the single-future optimization of Future.first too.
Version bump to v1.1.2
Refactor Future to track its state explicitly

Instead of @resolved and @failed.
Avoid taking locks in resolved and failed Futures

When a Future's state can be seen as not pending we don't need to take the lock to read @value and @error, because we (should) be guaranteed to have seen the writes to those variables.

This makes #value, #on_value and the other read paths approximately 3x faster than when taking a lock.
Change from Mutex#synchronize to #lock/#unlock in Future

It's around 40% slower because of the block.
Change from Mutex#synchronize to #lock/#unlock in BaseConnection and IoReactor
Version bump to v1.1.3.pre0
Add IoReactor#cancel_timer
Version bump to v1.1.3
Rescue and ignore Errno::EBADF from IO.select

It's raised when a socket is closed while the reactor is in IO.select, so it will be cleared up on the next tick.
Rescue and ignore IOError from IO.select

Same rationale as for Errno::EBADF
Merge branch 'handle_badf_in_select'
Run CI tests in Ruby 2.1.1 too
Add jruby-head to the Travis build matrix
Update the nomenclature in the Future specs

Futures are resolved, promises are fulfilled.
Remove stray whitespace in the Future specs
Update the descriptions to the Future#flat_map specs