abstract buffer pool to make it reusable for other purposes
Client/ServerSSLEngineProvider are can now provide any PipelineStage, not necessarily SslTlsSupport

That allows to provide custom ssl implementations. The default implementation is
still SslTlsSupport.
initial Bridj'd OpenSslSupport stage implementation dump
openssl: make sure ActorSystem is shut down after tests
openssl: refactor tests
io: rename SslBufferPool.MaxPacketSize => BufferSize
openssl: fix sending of big buffers by splitting into direct buffer size chunks
openssl: move initialization code into OpenSSL object
openssl: new OpenSSL.getLastError
openssl: fix writing when writing doesn't succeed on first try
openssl: a first stab for the new openssl configuration builder
openssl: reorganize native wrappers into their own source files
openssl: BIO.fromInputStream + BIO.fromBytes
openssl: implement conversion from java.security.KeyStore => openssl certificates / keys

In tests we don't have to use disableVerification any more
openssl: fix checkResult for TypedPointers
openssl: cleanup BIO
openssl: cleanup
openssl: try to cleanup OpenSSL binding after test run
openssl: implement a simple reference manager to free BIOImpls
openssl: a more explicit freeing strategy for BIOImpl refs

We implement BIO_METHOD.destroy and free the global ref there if
there is one. This means BIOs are only freed when BIO.free is called. This
is a good thing because SSL.free may call BIO.free and we want to avoid
race conditions between the GC freeing stuff and explicit freeing.

A corollary is that we use resource lending style for BIO.fromInputStream
which is now called withInputStreamBIO (same for `withBytesBIO`).