Discovering and accumulating all @Profile meta-annotations

Issue: SPR-10812
Polishing
Ensure @Conditions consider super classes

Fix @Condition evaluation to also consider super classes for both
@Configuration classes and regular @Components. This change allows
@Conditional annotations to be inherited and restores the previous
behavior of @Profile.

Issue: SPR-10840
Revise use of FilterChain in MockMvc

MockFilterChain should not be re-used across requests. This is not an
issue unless tests are executed concurrently. This change ensures the
MockFilterChain is re-created for each request in MockMvc.

Issue: SPR-10838
Fix minor issue in JettyRequestUpgradeStrategy

Issue: SPR-10861
Add support for custom types in AMMH
Fix javadoc
Revert "Ensure @Conditions consider super classes"

This reverts commit 620c16f5c7bb543b18f71b2848f90461f8646237.
Javadoc that @Conditionals are not inherited

Issue: SPR-10840
Add AsyncRestTemplate

Added AsyncRestTemplate, the asynchronous counterpart to the
RestTemplate that was introduced in Spring 3. All methods on the
AsyncRestTemplate are similar to those found on the synchronous
RestTemplatem, except that they return Future wrappers instead of
concrete results.

To enable this, this commit introduces the AsyncClientHttpRequest and
AsyncClientHttpRequestFactory, similar to the ClientHttpRequest and
ClientHttpRequestFactory, except that ClientHttpRequest returns a
Future<ClientHttpResponse> for the execute method. Two implementations
of these interfaces are provided, one based on the HttpURLConnection
incombination with a Spring AsyncTaskExecutor and one based on Apache
HttpComponents HttpAsyncClient.

Issue: SPR-8804
Fix bug with the order of messaging arg resolvers
Restore method signatures on MediaType

Previously the method signatures for includes and isCompatibleWith were
incompatible with Spring 3.2.x since the argument was now MimeType.
This caused NoSuchMethodError to be thrown when a class was compiled
against MediaType from Spring 3.2.x and ran against MediaType
from Spring 4.x.

This commit restores the signatures and implements each method by
invoking the super class method.

Issue: SPR-10860
Merge pull request #346 from rwinch/SPR-10860

Restore method signatures on MediaType
Upgraded to Reactor 1.0 M2 release
Reintroducing deprecated addConstructorArg variant

Still used by Spring Security 2.0.x's NamespaceHandler etc.
Not exposing ApplicationContext on ConditionContext anymore
Marked @Profile as @Documented
Consistent use of Class<?>
AnnotationConfigWebApplicationContext allows for repeated register/scan calls

Restoring consistency with AnnotationConfigApplicationContext.

Issue: SPR-10852
Introduced support for @Lazy on injection points

This turned into a rather huge affair since it led to the introduction of a new AutowireCandidateResolver implementation in the spring-context module. That ACR impl is now being set through AnnotationConfigUtils; GenericApplicationContext and co do not set a default QualifierAnnotationAutowireCandidateResolver anymore (which has always been a smell anyway).  At the same time, dependency ordering has moved from AutowiredAnnotationBeanPostProcessor to DefaultListableBeanFactory itself through a "dependencyComparator" strategy, applying to constructor dependencies and lazy resolution proxies as well.

Issue: SPR-10353