Improve ssl option in connect

Allows passing OpenSSL::SSL::SSLContext with customized parameters
I think this would be a bit more concise
``` ruby
ssl_context = options[:ssl].is_a?(OpenSSL::SSL::SSLContext) ? options[:ssl] : OpenSSL::SSL::SSLContext.new
raw_socket = OpenSSL::SSL::SSLSocket.new(raw_socket, ssl_context)
```