Provide alternative message code resolver styles

Introduce new 'style' property to DefaultMessageCodesResolver allowing
for alternative message styles. Current styles are PREFIX_ERROR_CODE
and POSTFIX_ERROR_CODE. The default style retains existing behavior.

Issue: SPR-9707
Introduce MessageCodeFormatter abstraction

This commit refactors changes introduced in 21760a8 as follows:

 - Introduce top-level MessageCodeFormatter interface and
   DefaultMessageCodesResolver#setMessageCodeFormatter property to allow
   for user-defined message code formatting strategies

 - Rename DefaultMessageCodesResolver.Style enum => DMCR.Format

 - Refactor DefaultMessageCodesResolver.Format to implement the new
   MessageCodeFormatter interface

The result is that users have convenient access to common formatting
strategies via the Format enum, while retaining the flexibility to
provide their own custom MessageCodeFormatter implementation if desired.

See DefaultMessageCodesResolverTests#shouldSupport*Format tests for
usage examples.

Issue: SPR-9707
Merge pull request #167 from philwebb/SPR-9707

# By Chris Beams (1) and Phillip Webb (1)
* SPR-9707:
  Introduce MessageCodeFormatter abstraction
  Provide alternative message code resolver styles
Allow SpEL reserved words in type package names

Expand the kinds of tokens considered when parsing qualified type names.
This allows previously reserved words (for example 'mod') to be used as
part of a package name.

Issue: SPR-9862
Merge pull request #163 from philwebb/SPR-9862

# By Phillip Webb
* SPR-9862:
  Allow SpEL reserved words in type package names
Resolve Collection element types during conversion

TypeDescriptor.valueOf now uses GenericCollectionTypeResolver to resolve
Collection and Map element types whereas previously this information was
simply not supported, i.e. null.

Issue: SPR-9257
Merge pull request #156 from philwebb/SPR-9257

# By Phillip Webb
* SPR-9257:
  Resolve Collection element types during conversion
Avoid NPE in ObjectToObjectConverter

Bypass ObjectToObject conversion when source and object types are
identical and protect against a null source object.

Prior to this commit the TypeDescriptor was used to determine if
conversion was necessary.  This caused issues when comparing a
descriptor with annotations to one without.  The updated code
now compares using TypeDescriptor.getType().

The ObjectToObject converter will now no longer attempt to convert
null source objects.

Issue: SPR-9933
Polish JavaDoc
Revert ConversionService SPI interface

Remove canBypassConvert() methods from the ConversionService SPI
interface, restoring it to the previous Spring 3.1 incarnation.

Bypassing conversion is now only supported when using a
GenericConversionService.

Issue: SPR-9566
Upgrade to Hamcrest 1.3
Throw on advise returning null for primitive type

Throw an AopInvocationException when an AOP advisor returns null on
a method that should return a primitive type.

Issue: SPR-4675
Merge pull request #99 from dsyer/SPR-4675

* SPR-4675:
  Throw on advise returning null for primitive type
  Upgrade to Hamcrest 1.3
DispatcherPortlet uses a forward for rendering a view as resource response

Issue: SPR-9876
Added "jtaDataSource" property to JPA LocalContainerEntityManagerFactoryBean (for default units)

Issue: SPR-9883
Portlet mapping predicate compareTo implementations are transitive now

Also removed unused validateHandler code with dead cachedMappings HashMap.

Issue: SPR-9874
ManagedResource annotation supports placeholders for String attributes

In particular, the specified object name may use a placeholder for its domain part now, allowing for several instances of the MBean to be registered against the same MBeanServer from different applications.

Issue: SPR-8244
Added test for custom async annotation
Polished "Could not resolve placeholder" error message
DateTimeFormat annotation supports use as a meta-annotation as well