Implement custom tls options

This allows users of the API to either specify a simple CA-File for certificate verification, or a custom SSLContext in order for a more fine-grained control of the TLS options they want to use.

As of now, no additional tests were added, but the existing tests were changed to reflect the changes in internal methods, so that they still pass.

I have some tests available, but they were designed for another monkeypatch around this, so I'll have to take some time to adjust them for this code before I can publish them.

This pull request also contains the test fix from #160.
Do you want me to retain the default behaviour (no validation at all) if the parameter hash is empty? When calling ``OpenSSL::SSL::SSLContext#set_params``, the given hash is merged with ``OpenSSL::SSL::SSLContext::DEFAULT_PARAMS``, resulting in a few bug workarounds being enabled, peer verification being enabled, and the "standard system trust store" being used to validate the peer certificate.

I can see both options being reasonable, as we might not want to break everyone's code because they have invalid certificates, but being secure by default and rejecting invalid certificates really seems like a good idea to me. Thoughts?