DefaultAdvisorChainFactory never passes null into ClassFilter, enabling async advisor to work without target class as well

Issue: SPR-11910
Polishing

Issue: SPR-11910
Support for nested path using field access

This commit adds a nested path support for DirectFieldAccessor that is
similar to what BeanWrapper provides. It is now possible to use
expressions such as "person.address.city.name" to access the name of
the city that a given person lives in using fields to traverse the
graph.

DirectFieldAccessor also now supports an auto-grow option to create
a default instance for a "null" intermediate path. This option is
false by default and leads to a NullValueInNestedPathException in such
a case.

This commit also harmonizes part of the tests suite so that core tests
are shared between BeanWrapperImpl and DirectFieldAccessor.

Note that map and list access is not implemented as part of this
commit.

Issue: SPR-9705
Workaround for WFLY-3474 NullPointerException

Prior to this commit, the ServletResponseHttpHeaders.get method
would throw an NPE when used under Wildfly 8.0.0.Final and 8.1.0.Final.
This can be traced to WFLY-3474, which throws an NPE when calling
HttpServletResponse.getHeaders("foo") and that header has not
been defined prior to that.
This would cause NPE being thrown by AbstractSockJsService when
checking for CORS HTTP headers in the server HTTP response.

This commit surrounds that method call in AbstractSockJsService and
guards against this issue.

Issue: SPR-11919
Fix unit test for SPR-11919

Issue: SPR-11919
Fine tune STOMP and WebSocket related logging

Optimize logging with tracking the opening and closing of WebSocket
sessions and STOMP broker connections in mind.

While the volume of messages makes it impractical to log every message
at anything higher than TRACE, the opening and closing of connections
is more manageable and can be logged at INFO. This makes it possible to
drop to INFO in production and get useful information without getting
too much in a short period of time.

The logging is also optimized to avoid providing the same information
from multiple places since messages pass through multiple layers.

Issue: SPR-11884
Nested properties support for field-based validation

This commit validates that the changes introduced in 8221c9abc5 are
indeed allowing DirectFieldBindingResult to support nested validation
paths.

Issue: SPR-10623
Fix warning
autoGrow support in DataBinder for field access

This commit harmonizes the autoGrow feature for both regular bean
property and direct field access.

Issue: SPR-8692
ReflectionUtils caches Class.getDeclaredMethods() results; AnnotationUtils caches findAnnotation results

Issue: SPR-11882
Append suffx to user dest in SimpMessagingTemplate

Isssue: SPR-11868
Polish
SharedEntityManagerCreator immediately throws TransactionRequiredException on persist, merge, remove etc (as required by JPA spec)

Issue: SPR-11923
Add AsyncRestTemplate support to client-side MockMvc

Issue: SPR-1822
Add STOMP subscribe/unscubscribe ApplicationContext events

Issue: SPR-11813
Javadoc coverage of package metadata detection (supported for Hibernate, not needed for EclipseLink and OpenJPA)

Issue: SPR-10910
AbstractApplicationContext uses AtomicBoolean instead of synchronization for active/closed flags

Issue: SPR-11863
More WebSocket logging updates

Update WebSocketSession toString methods to include the handshake URI
and add id and URI fields to ensure they're available after close().

Log WebSocket session open and close events at INFO.

Remove trace messages for destinations that do not match.

Issue: SPR-11884
Avoid multiple invocations of afterConnectionClosed

This change ensures the state of a SockJS session is set to CLOSED
immediately after close is invoked. This avoids duplicate invocations
of afterConnectionClosed in WebSocket transport.

Issue: SPR-11884
Use SESSION_NOT_RELIABLE when no messages received

When a WebSocket session is closed after not having received any
messages, we'll use SESSION_NOT_RELIABLE to indicate to other parts
of the session closing code not to send anything further (e.g.
SockJS "Go Away!" frame).

Issue: SPR-11884