Move the unblocker, lock and write buffer to BaseConnection
Make the last argument to IoReactor#connect an options hash
Make it possible to disable the #read/#on_data tests in connection_common
Add SSL connection support

IoReactor#connect will upgrade a connection to an SSL connection when the :ssl option is set to true.
Make it possible to pass an SSLContext to SSL connections

Requires a very unfortunate test faux pas: in order to make the SSL socket connect I need to grab the instance variable of the connection object, I can't come up with another way of simulating a connect. With regular connections it's the socket that is passed to the reactor, but with the SSL socket it's also the socket, and not the SSL socket, but it's the SSL socket you call #connect_nonblock on.
Fix close behaviour of SslConnection
Make a test less specific to support both MRI and JRuby

It's a bit of an ugly test, since it uses the fact that an injected object is passed into OpenSSL, which borks when it gets something it doesn't understand – just to assert that it gets passed in. Turns out MRI and JRuby raise errors with different messages, which shouldn't be very surprising.
Be even less specific…
Better test coverage, and implementation of connection options
Make the third parameter to IoReactor#bind an options hash
Use @io and not @socket in Acceptor, as in *Connection
Close the Acceptor when bind fails
Add support for SSL servers
Mark SslConnection as private
Add a test for what happens when an SSL read fails
Make a reactor test more resilient to races
Use IO::Wait{Readable,Writable} instead of inspecting error messages
Fix the SSL certificate generation in the integration test to work in JRuby
Work around jruby/jruby#1716

https://github.com/jruby/jruby/issues/1716
Use IO::WaitReadable instead of JRuby's SSLErrorWaitReadable

It's the same thing, but the code is portable.