http_client: Manually construct query parameters for websocket connections

The requests library, for versions 2.0.0 and greater (at least), will not
construct a URL for a scheme that does not begin with 'http'. For our
websocket connections, this means that a request object cannot be prepared,
as the PreparedRequest prepare method will simply return the URL in the
original request object.

This patch works around this by manually constructing the query parameters
from the passed in dictionary.