Introduced getFlashMapsMutex template method and optimized SessionFlashMapManager's locking

SessionFlashMapManager also clears the session attribute now when the given FlashMap List is empty.

Issue: SPR-11538
Added ASM-based tests for custom scoping annotations

Issue: SPR-11574
Upgraded to Tiles 3.0.3
ShallowEtagHeaderFilter use specified contentlength

Prior to this commit, the ShallowEtagHeaderFilter did not use the
content length given by the content generator to set the
ByteArrayOutputStream's buffer size.
This can lead to performance issues for large content since the buffer
grows as the content is being written.

This commit adds a new ByteArrayOutputStream variant called
ResizableByteArrayOutputStream. This implementation has public methods
for modifying the internal buffer size and does not synchronize on
buffer access.
This commit also make use of this new variant in
ShallowEtagHeaderFilter.

Issue: SPR-8271
Introduce Tiles version constants in Gradle build
Upgraded to AspectJ 1.8.0 RC2
Polishing
Add URI based MockHttpServletRequestBuilder constructors

This commit adds new MockHttpServletRequestBuilder constructors
with an URI parameter in addition to the URL template + URL variables
existing ones.

It gives more control on how the URL is built, allowing for example to
use URL variables containing '/' character with proper encoding.

Issue: SPR-11441
Improve method order in MockMvcRequestBuilders
Give meaningful names to SprXxxTests in spring-test
Revised ResizableByteArrayOutputStream as an actual subclass of ByteArrayOutputStream, and consistently applied appropriate ByteArrayOutputStream initial capacities across the codebase

Issue: SPR-11594
Polishing
DispatcherServlet logs request URI in encoded form only

Issue: SPR-11591
Add BufferingStompDecoder

Before this change the StompDecoder decoded and returned only the first
Message in the ByteBuffer passed to it. So to obtain all messages from
the buffer, one had to loop passing the same buffer in until no more
complete STOMP frames could be decoded.

This chage modifies StompDecoder to return List<Message> after
exhaustively decoding all available STOMP frames from the input buffer.
Also an overloaded decode method allows passing in Map that will be
populated with any headers successfully parsed, which is useful for
"peeking" at the "content-length" header.

This change also adds a BufferingStompDecoder sub-class which buffers
any content left in the input buffer after parsing one or more STOMP
frames. This sub-class can also deal with fragmented messages,
re-assembling them and parsing as a whole message.

Issue: SPR-11527
Add configuration for message buffer size limit

BufferingStompDecoder message buffer size limit can now be configured
with JavaConfig MessageBrokerRegistry.setMessageBufferSizeLimit() or
with XML <websocket:message-brocker message-buffer-size="">.

Issue: SPR-11527
Polish StompDecoder and the new Buffering sub-class

Issue: SPR-11527
Add WebSocketTransportRegistration

Issue: SPR-11527
Add WebSocket transport configuration support

Issue: SPR-11527
Polishing
Add session lifecycle ApplicationEvent's

Issue: SPR-11578