WebSocketClient: always use Error objects on error

when connectFailed is emitted via failHandshake() a string is emitted
if connectFailed is emitted via handleRequestError, and thus via
http.ClientRequest, an Error object is used.

This patch attempts to streamline the use of Error objects.