+ Making api.UpgradeRequest never return null, but also have no logic on
how to populate the parameter map
+ Using MultiMap in websocket-client for parameter map parsing
+ Using HttpServletRequest.getParameterMap() as-is in websocket-server
+ Adding unit testing for both sides
+ 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
* 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