Low-level Connect Function

Following [this exchange](https://bugs.eclipse.org/bugs/show_bug.cgi?id=444748) in the Jetty issue tracker I think it should be possible for users to supply their own `WebSocketClient` to-be-used for connection establishment:

> You should treat a WebSocketClient instance the same way as you do a browser (in concept).
> Only 1 instance per JVM.

gniazdo creates a new client for each connection (which - bar the mentioned bug - is no problem in itself) and will continue to do so w/ this PR. Only the new function `connect*` will accept a `WebSocketClient`. 

Also, I added `websocket-client´ to the public API to have a convenience function that creates a client from an URI.
Is this type tag necessary? Does it prevent a reflection?