Prevent memory leaks with @Configuration beans

Refactor ConfigurationClassEnhancer to allow cglib caching of
generated classes.  Prior to this commit each enhanced @Configuration
class would consume permgen space when created.

The CallbackFilter and Callback Types are now defined as static final
members so that they can be shared by all enhancers.  Only the
callbackInstances remain specific to a @Configuration class and
these are not used by cglib as part of the cache key.

Issue: SPR-9851
Merge pull request #166 from philwebb/SPR-9851

# By Phillip Webb
* SPR-9851:
  Prevent memory leaks with @Configuration beans
Remove trailing whitespace
SpEL support for methods and properties on class …

Update the ReflectiveMethodResolver and ReflectivePropertyAccessor
to allow methods and properties of java.lang.Class to be resolved
when the target object is a class.

Issue: SPR-9017
Merge pull request #136 from philwebb/SPR-9017

* SPR-9017:
  SpEL support for methods and properties on class …
  Remove trailing whitespace
Polish trailing whitespace
Allow MapToMap conversion to work when the target map does not have a
default constructor (as long as a new map copy is not required).

Issue: SPR-9284
Merge pull request #155 from philwebb/SPR-9284

* SPR-9284:
  Allow MapToMap conversion to work when the target map does not have a default constructor (as long as a new map copy is not required).
  Polish trailing whitespace
Provider injection into prototype beans works for method parameters as well

Issue: SPR-9630
BeanWrapper does not fall back to String constructor if ConversionService attempt failed before

Issue: SPR-9865
OpDivide does not return a TypedValue for its operate result (consistent with OpMultiply)

Issue: SPR-9869
Jaxb2Marshaller has non-synchronized access to the JAXBContext once initialized

Issue: SPR-9867
LoadTimeWeaverAware beans are consistently being created early for JPA weaving to work reliably

Includes a change for factory methods that declare their return type as FactoryBean: When asked for a specific type match (e.g. LoadTimeWeaverAware), we do check early singleton instances as well (reusing the instances that we create for getObjectType checks). This is necessary in order to make @Bean method introspection as capable as XML bean definition introspection, even in case of the @Bean method using a generic FactoryBean declaration for its return type (instead of the FactoryBean impl class).

Issue: SPR-9857
Only cache by-type lookups if configuration has been marked as frozen

Issue: SPR-9448
Mention matching bean names in exception message in case of non-unique EntityManagerFactory lookup
Only cache by-type lookups if configuration has been marked as frozen

Issue: SPR-9448
LoadTimeWeaverAware beans are consistently being created early for JPA weaving to work reliably

Includes a change for factory methods that declare their return type as FactoryBean: When asked for a specific type match (e.g. LoadTimeWeaverAware), we do check early singleton instances as well (reusing the instances that we create for getObjectType checks). This is necessary in order to make @Bean method introspection as capable as XML bean definition introspection, even in case of the @Bean method using a generic FactoryBean declaration for its return type (instead of the FactoryBean impl class).

Issue: SPR-9857
LoadTimeWeaverAware beans are consistently being created early for JPA weaving to work reliably

Reverted change for @Bean methods that declare FactoryBean as their return type: The effects of trying to create the FactoryBean to find out about its implementation type are too far-reaching. It's better to recommend declaring a specific return type in the method signature if you want the container to specifically react to your implementation type.

Issue: SPR-9857
Made AutoProxyCreatorTests less dependent on container's own interrogation of FactoryBeans

Issue: SPR-9857
Polishing