Add ResultMatchers for status code ranges

Issue: SPR-11424
Allow HttpMethod as a controller method argument

Issue: SPR-11425
Add encoding for the default action in FormTag

Issue: SPR-11426
Ensure matching user destination returned

Before this change, when a client subscribed to a "user" destination
(e.g. /user/foo), actual messages received in response to that
subscription contained the server-translated, unique user destination
(e.g. /foo-user123).

This is not an issue for clients such as stomp.js since the
subscription is unique and sufficient to match subscription responses.
However, other STOMP clients do additional checks on the destination
of the subscription and the response.

This change ensures that messages sent to clients on user destionations
always contain a destination that matches the one on the original
subscription.

Issue: SPR-11423
Restored original detectHandlerMethods call chain for backwards compatibility with custom subclasses (such as in Spring Integration)
Clarified CompositeCacheManager's applicability, added convenience constructor with given delegates, and fixed getCacheNames implementation to never return duplicates

Issue: SPR-11427
Restrict ETag generation in ShallowEtagHeaderFilter

Prior to this commit, all 2xx HTTP responses were eligible for ETag
generation in ShallowEtagHeaderFilter. In some cases, this would use
CPU resources for no reason since HTTP clients would not use ETags.

This commit is an optimization and restricts ETags generation in cases
where (all conditions must be met):
- response has a 2xx status
- request is a GET
- response does not contain "no-store" in its "Cache-Control" header

Issue: SPR-11110
Objects with multi-threaded access should not lazily populate a hash field

Issue. SPR-11428
Avoid unnecessary getMappingForMethod repeat (in particular for RequestMappingInfo)

Issue. SPR-11428
Related polishing

Issue. SPR-11428
Mixed polishing along with recent changes
EhCache/JCacheCacheManager needs to re-obtain runtime-added Cache reference for potential decoration

Issue: SPR-11407
Polishing
Polishing
Integrate animal sniffer

Animal sniffer provides tools to assist verifying that classes
compiled with a newer JDK are compatible with an older JDK.

This integrates a SNAPSHOT of the tool (1.11-SNAPSHOT) that
permits the use of custom annotations. Added @Java7Required,
@Java8Required and @SunVmRequired and annotated the few places
where we rely on a specific environment.

The verification process can be invoked by running the 'sniff'
task.