Refactor HandlerMethod support in spring-messaging

Introduce base class AbstractMethodMessageHandler for
HandlerMethod-based message handling.

Add MessageCondition interface for mapping conditions to messages
with support for combining type- and method-level annotation
conditions, the ability to match conditions to messages, and also
comparing matches to select the best match.

Issue: SPR-11024
Upgraded to ASM 4.2
Only apply Groovy plugin to modules where it is actually needed
Added Groovy plugin to spring-context module as well
Accept non-generic type match as a fallback

DefaultListableBeanFactory performs a fallback check for autowire candidates now, which GenericTypeAwareAutowireCandidateResolver implements to accept raw type matches if the target class has unresolvable type variables. Full generic matches are still preferred; the BeanFactory will only start looking for fallback matches if the first pass led to an empty result.

Issue: SPR-10993
Issue: SPR-11004
ExpressionState.getConfiguration() should never return null

Issue: SPR-11031
Made processCommonDefinitionAnnotations(AnnotatedBeanDefinition) public

Issue: SPR-11032
Polish
Introduced ScriptEvaluator strategy interface

Including ScriptEvaluator implementations for JSR-223, Groovy and BeanShell. BeanShell consistently receives the bean ClassLoader now. Also revised ScriptFactory and its implementations for varargs.

Issue: SPR-11007
Polishing
Changed spring-beans-groovy's Groovy dependency to optional

Issue: SPR-11028
Cache InjectionMetadata per bean name instead of per Class

Issue: SPR-11027
Restore prior resolveTypeArguments behavior

Restore prior behavior of GenericTypeResolver.resolveTypeArguments to
never include null elements in the returned array.

Issue: SPR-11030
Make EvaluationException more informative

Update EvaluationException to expose the toDetailedString() method as
the exception message. The simple message can now be accessed via the
new getSimpleMessage() method.

Issue: SPR-10938
Add getSource() to ResolvableType & TypeDescriptor

Add getSource() method to ResolvableType and TypeDescriptor allowing
access to the underlying source field or method parameter when possible.

Primarily added to provide access to additional type information or
meta-data that alternative JVM languages may provide.

Issue: SPR-10887
Fix off-by-one error in parseLocaleString

Fix off-by-one error in StringUtils.parseLocaleString()

Issue: SPR-10364
Replace MvcUrls with MvcUriComponentsBuilder

Issue: SPR-8826
Update MvcUriComponentsBuilder to use DispServlet WAC

Issue: SPR-8826
Cache InjectionMetadata per bean name instead of per Class, if possible

Issue: SPR-11027
Factory method type resolution works with indexed and named arguments as well

Issue: SPR-11019