398105 - Clean up WebSocketPolicy
393733 - WebSocketClient interface should support multiple connections

* Initial pass at merging functions of WebSocketClientFactory into
  WebSocketClient itself, eliminating the need for the factory.
* Introducing ConnectPromise to separate the connect future from
  the client itself, hopefully allowing for multiple connections
  from the client instance.
93733 - WebSocketClient interface should support multiple connections

+ Cleaning up no longer used items in WebSocketClient
+ Adding back Connect Timeout handling (unreliable atm)
+ Making ConnectPromise a FuturePromise with Runnable, no longer need
  FutureTask
+ Making sure Session is properly opened
+ Removing need for EventDriver.awaitActiveSession()
393733 - WebSocketClient interface should support multiple connections

+ Reworking Connection Timeout handling
Removing noisy logging/debugging
393733 - WebSocketClient interface should support multiple connections

+ Removing deprecated methods from Session
+ Fixing client side UpgradeConnection to handle extension via new
  ExtensionStack object
+ Making ExtensionStack.getNegotiatedExtensions() return
  List<ExtensionConfig> instead of List<String>
+ Fixing tests that relied on changes
Making sure cookies are set