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.
Move the new method parameters into a single options hash:

```ruby
def self.wrap_with_ssl(io, args = {})
end
```

This removes the dependency on the order of arguments. Remember to include a quick doc string explaining the keys of the hash.