Avoid writing to the unblocker pipe if it’s full

This requires locking around the read, unfortunately. Since we must be sure that the IO.select call and the write_nonblock is done without the read being interleaved (because that could mean that we don’t write the the pipe even when we should).
Use the unblocker state directly instead of calling #closed?

This is a tiny performance optimization, and it feels ok to use the state variable internally in the class.
Fix API docs for Acceptor

This should have been here long ago

[ci skip]
Mark the constructor of BaseConnection as private

[ci skip]
Add API docs for IoReactor#bind

I had completely missed this.

[ci skip]
Add an example to the IoReactor#connect API docs

The docs for this method are still way too thin, but I guess most of the usage is in the class docs.
Make a small adjustment to the IoReactor#connect API docs

[ci skip]
Reformat the Redis example code
Add @since tags to all public APIs
Extend the HTTP client example with HTTPS capabilities
Update Yard

[ci skip]
Add a space after the “:” in the headers that HttpClient sends
Add a missing require
Unblock the reactor on stop so that it stops quicker

Otherwise it might take up to the tick resolution to stop, completely unnecessarily.
Don’t calculate 2**16 for every read
Avoid doing work when there are no timers
Add test coverage to Future#map and #then
Improve the test coverage of Future#flat_map and #then
Improve the test coverage of Future#map and #then
Improve the test coverage of Future#recover