+ 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
+ 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()
* 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.
* Using new IOState object in AbstractWebSocketConnection to better
manage close handshake state and replies.
* Cleaning up many bad BufferPool.release() calls against ByteBuffers
that didn't arrive from BufferPool.acquire()
* Removing many ByteBuffer.wrap() calls.
* Fixing FrameCompression / MessageCompression extension handling
of ByteBuffers
+ Using ForkInvoker from util
+ Using FrameBytes logic from SPDY
+ Fixing bad flush logic
+ Fixing lazy BufferPool.release() logic
+ Fixing Buffer reuse issue
+ Fixing BlockheadServer to use ExtensionStack
+ Moving WriteResultFuture helper classes out of tests into main
+ Introducing common IOState handling for common close handshake use