Add support for resolving message headers

This change adds support for @Header and @Headers annotated method
arguments to spring-messaging. Also supported are arguments of type
MessageHeaders, and MessageHeaderAccessor (including sub-types of
MessageHeaderAccessort as long as they provide a wrap(Message<?>)
static factory method).

This change also renames @MessageBody to @Payload.

Issue: SPR-10985
Allow greater flexibility for template method createDataBinderFactory

Prior to this commit, the template method createDataBinderFactory
would only allow ServletRequestDataBinderFactory as a return type.

This commit updates the method signature and allows
InitBinderDataBinderFactory, a superclass of the previous one.
Then other implementations can override this method and return
other InitBinderDataBinderFactory types.

Issue: SPR-10920
Polish Javadoc for ResolvableType
Changed JSR-330 detection logging from info to debug

Issue: SPR-10974
Reduced "getParameterType call not supported" log message to single line

Issue: SPR-10185
Fixed type prediction for generic factory methods

We're consistently resolving class names now, and the entire algorithm moved from GenericTypeResolver to the internal AutowireUtils helper in the bean factory package.

Issue: SPR-10411
Implement java.io.Flushable wherever applicable
Autowiring of generic types

Includes revisions of MethodParameter and DependencyDescriptor (in particular towards a reference to the containing class). Also refines several ResolvableType method signatures.

Issue: SPR-9965
Fix issue with DeferredResult on @RestController

Before this change, async result handling on controller methods failed
to observe type-level annotations annotations. The issue was never
noticed until we started supporting type-level @ResponseBody and the
@RestController meta annotation.

Issue: SPR-10905
Add STOMP broker relay to configure "host" header

Issue: SPR-10955
Validate if STOMP frame is allowed to have a body

Issue: SPR-10890
Use alternative UUID strategy in MessageHeaders

This change adds an alternative UUID generation strategy to use by
default in MessageHeaders. Instead of using SecureRandom for each
new UUID, SecureRandom is used only for the initial seed to be
provided java.util.Random. Thereafter the same Random instance is
used instead. This provides improved performance while id's are
still random but less securely so.
Add value() attribute to @Payload
Reinstate deleted @author tag

SPR-10411
Polish type prediction for generic factory methods

 - Now avoiding NullPointerExceptions in GenericTypeResolver's
   resolveReturnTypeForGenericMethod() in case the supplied ClassLoader
   is null.
 - AutowireUtils.resolveReturnTypeForFactoryMethod() now properly
   asserts that the supplied ClassLoader is not null.
 - Fixed copy-n-paste errors in Javadoc for
   AutowireUtils.resolveReturnTypeForFactoryMethod().

Issue: SPR-10411
Delete unused import in StdReflParamNameDscoverer
Add helper method to ResourceHandlerRegistry
Restored registration of nested component classes (even without factory methods)

Issue: SPR-10865
Issue: SPR-10970
Polishing

Issue: SPR-10185
Consistency between InvocableHandlerMethod in web and messaging modules