Test for ImportBeanDefinitionRegistrar double scan

Issue: SPR-12334
Polishing
Revised test for ImportBeanDefinitionRegistrar double scan

Issue: SPR-12334
(cherry picked from commit 6e5711a)
Allow defining default content negotiation strategy

During the HTTP Content Negotiation phase, the ContentNegotiationManager
uses configured ContentNegotiationStrategy(ies) to define the list of
content types accepted by the client.

When HTTP clients don't send Accept headers, nor use a configured
file extension in the request, nor a request param, developers can
define a default content type using the
ContentNegotiationConfigurer.defaultContentType() method.

This change adds a new overloaded defaultContentType method that takes a
ContentNegotiationStrategy as an argument. This strategy will take the
current request as an argument and return a default content type.

Issue: SPR-12286
QualifierAnnotationAutowireCandidateResolver calls BeanFactory.getType defensively

Issue: SPR-12191
Polishing
Polish SPR-12286

Issue: SPR-12286
Polish Javadoc
Update documentation for Map arguments

Issue: SPR-12347
Update javadoc
ClassReader relies on autoboxing for reuse of cached primitive values

Issue: SPR-12365
HibernateTransactionManager supports result access after completion

Issue: SPR-12349
Support text/xml and application/*+xml in Jackson XML message converter

Issue: SPR-12366
TilesConfigurer defensively expects null from getResources in case of no resources found

Also includes order preservation for resource results with Tiles 2 as well as retrieval failure logging with Tiles 3.

Issue: SPR-12362
Polishing
Add author attribution for htmlEscape methods

Issue: SPR-9293
Add ImmutableMessageChannelInterceptor

This change adds a ChannelInterceptor that flips the immutable flag on
messages being sent. This allows components sending messages to leave
the message mutable for interceptors to further apply modifications
before the message is sent (and exposed to concurrency).

The interceptor is automatically added with the STOMP/WebSocket Java
and XML config and the StompSubProtocolHandler leaves parsed incoming
messages mutable so they can be further modified before being sent.

Issue: SPR-12321
Add mention of java.util.Optional in @MVC

Issue: SPR-12370
Fix unnecessary required spring-context-support dep

Prior to this commit, a project using compile time weaving upgrading to
4.1 was forced to add spring-context-support and the jcache API in order
to build. This problem is not new really: spring-aspects holds all
aspects provided by the framework and they all are evaluated when
compiling. 4.1 just happens to define a new aspect that requires extra
dependencies.

This commit uses a new annotation of AspectJ 1.8.3. When @RequiredTypes
is added on an aspect, it is evaluated only if the classes defined on the
annotation are actually present. If they are not, the aspect is disabled
and does not break the build.

Issue: SPR-12163
@Entity no longer required with spring-aspect

This commits complements 222d2b1 for another required dependency.

javax.persistence.Entity was previously required, regardless of which
aspects were actually used by the project. It is now optional and will
not break the build if it is not present. Note that the side effect is that
AnnotationDrivenStaticEntityMockingControl is disabled as well if the
JPA API is not available.

Issue: SPR-6819