(PUP-1411) Ensure OpenSSL is initialized before TCP connection started

When puppet connects to an SSL server, it establishes a TCP connection,
and performs the SSL handshake, including creating an SSLContext and
validating the server's SSL certificate.

The first time this happens, ruby needs to initialize the openssl library.
On Windows agents, we are seeing this take upwards of 5 seconds or more.
While openssl is being initialized, the server is waiting, holding the
TCP connection open. When the server is running under webrick, the server
will only hold the connection open for 6.2 seconds.

This commit ensures that we initialize the openssl library prior to
establishing the TCP connection. This reduces the amount of time the
server needs to wait for the client to send the CLIENT_HELLO message.

Note it doesn't guarantee that the client will send the CLIENT_HELLO
message before the server times out the connection. For example, the
client may not have sufficient entropy to generate the ClientRandom
field in the CLIENT_HELLO.
(PUP-1411) Increase CLIENT_HELLO timeout

Previously, if a client established a TCP connection to the webrick server,
but the server did not receive any data within 6.2 seconds, the server
would close the connection, and report that the client disconnected.

The error message is actually misleading, because if the client did
actively disconnect, e.g. sent FIN or RST, then IO.select would report that the
socket is ready and timeout would not be reached.

This commit increases the timeout to 10 seconds and updates the error
message to more clearly say that the client did not send any data
within the timeout interval.

Note that we perform this check, because OpenSSL's SSL_accept will block
indefinitely, since the underlying socket is blocking by default.