Add support for client mode when constructed via SSL.newSSL(...)

Motivation:

At the moment it is not possible to use SSL in client mode with the added newSSL(...) abstraction as it will lead to a null pointer
and so segfaults. This is because we not setup our SSL object via SSLSocket and so the underlying datastructured are not set up
like expected.

Modifications:

* Store tcn_ssl_ctxt_t as data on the SSL object and use it to executed the SSL_callback_SSL_verify functions. Also add extra gards against
null pointers.
* Correctly setup seed and verify during newSSL(...)

Result:

It's now possible to also use newSSL(...) and use it for client mode
Allow to get the String representation of an error number

Motivation:

At the moment it is only possible to get the String representation of the last error by calling SSL.getLastError() which will allocate a String to return it.
Often it is cheaper to just call SSL.getLastErrorNumber() as it only returns a long and then only create the String representation of the error number if really necessary via an extra method call.

Modifications:

Add SSL.getErrorString(long) which allows to retrieve a String representation of a error number / code.

Result:

More efficient error handling possible.
Allow to get protocol version and creation time of the SSL

Motivation:

For proper implementation of SSLEngine on top of openssl we also need to be able to get the protocol version and creation time of the SSL

Modifications:

Add SSL.getVersion(long) and SSL.getTime(long)

Result:

Be able to create a proper SSLEngine based on openssl
Add support to change verify mode on SSL instance

Motivation:

To support SSLEngine.set*AuthMode(...) we need to add support to change the verify mode of an SSL instance.

Modifications:

Add SSL.setVerify(...) which allows to change the verify mode of an already created SSL instance.

Result:

It's possible now to change the verify mode on an created SSL instance and so a more complete SSLEngine implementation can be done.