Make use of Tomcat's new WsServerContainer.doUpgrade

Tomcat now provides a method for initiating a WebSocket upgrade at
runtime vs relying on JSR-356 deployment at startup. This change
switches to use that latest feature. For more information on the
Tomcat change see:

https://issues.apache.org/bugzilla/show_bug.cgi?id=55314#c7
Update ServerEndpointRegistration

In addition to implementing ServerEndpointConfig, the
ServerEndpointRegistration now also extends
ServerEndpointConfig.Configurator making it easier to override
handshake customization methods without having to extend a separate
class.
Polish DefaultHandshakeHandler

After this change the DefaultHandshakeHandler delegates to a
server-specific RequestUpgradeStrategy to update the HTTP response for
the handshake request and to begin the WebSocket interaction.

The DefaultHandshakeHandler however still retains the initial
validation of the WebSocket handshake including negotation of origin,
sub-protocol, etc. This allows sub-classes to override various
aspects of the negotiation independant of the WebSocket engine.
Upgrade spring-websocket to Tyrus 1.2.1

This targets currently nightly snapshots and future release
of Glassfish 4.0.1.
Remove IOException from HandshakeHandler
Adjust SockJS use of ServerHttpResponse close vs flush
Update TomcatRequestUpgradeStrategy for 8.0 RC1

While RC2 is not yet out, we need to support RC1 as well.
This change introduces temporary code that can be removed
once RC2 becomes available to avoid having to use Tomcat
snapshots.