Minimized ASM usage

In particular, avoid accidental usage of ASM for core JDK types - which will fail in case of a new bytecode version in the JDK, even if the application itself has been compiled with an earlier bytecode target.

Issue: SPR-10292
Revised Joda-Time support (as a side effect of JSR-310 support in Spring 4.0)

Issue: SPR-9641
Consistent Map/Set ordering

Use LinkedHashMaps/Sets wherever exposed to users, and code tests defensively in terms of expected Map/Set ordering. Otherwise, there'll be runtime order differences between JDK 7 and JDK 8 due to internal HashMap/Set implementation differences.

Issue: SPR-9639
Fixed general test suite problems found during OpenJDK 8 upgrade

Issue: SPR-9639
Upgrading to JDK 1.8 bytecode along with ASM 4.1 patch

ASM has been patched to accept 1.8 bytecode simply through removing an assertion. As a consequence, we have an embedded copy of the ASM sources now instead of jarjar'ing the original ASM jar. The sources originate from ASM 4.1; for CGLIB 3.0 compatibility, a further assertion has been removed.

Issue: SPR-9639
Initial support for JDK 8 Date-Time (JSR-310)

This is largely derived from our existing Joda-Time support, with corresponding classes wherever possible.

Issue: SPR-9641
Adapter for JDK 8's standard parameter name reflection facilities

Issue: SPR-9643
Support for JDK 8's "common" ForkJoinPool

Issue: SPR-9644
Temporary workaround for JDK 8 test compilation/execution problem

Issue: SPR-9639
Ensure WebSocketHandlerEndpoint can connect only once

WebSocketHandlerEndpoint and SockJsWebSocketHandler are stateful
wrappers that are not intended to be used with one client connection.
Switch DefaultSockJsService to constructor DI

DefaultSockJsService now relies on constructors and requires a
TaskScheduler at a minimum. It no longer needs lifecycle methods.
Fix minor issue and polish
Tighten up exception handling strategy

WebSocketHandler implementations:
- methods must deal with exceptions locally
- uncaught runtime exceptions are handled by ending the session
- transport errors (websocket engine) are passed into handleError

WebSocketSession methods may raise IOException

SockJS implementation of WebSocketHandler:
- delegate SockJS transport errors into handleError
- stop runtime exceptions from user WebSocketHandler and end session

SockJsServce and TransportHandlers:
- raise IOException or TransportErrorException

HandshakeHandler:
- raise IOException
Consolidate WebSocketHandler interface and sub-interfaces
Javadocs and general formatting polish
Add WebSocketHandlerInvoker class
Switch to single message method for WebSocketHandler
Remove HandlerProvider
Remove parameterized type from WebSocketHandler
Set Ant build.compiler to javac1.7