Add extension point to pre-configure a MockMvcBuilder

Issue: SPR-11497
Fix failing test
StaxStreamXMLReader ignores significant whitespace

The StaxStreamXMLReader no longer handles all whitespace as ignorable
whitespace.

Issue: SPR-12000
Merge pull request #593 from poutsma/SPR-12000

StaxStreamXMLReader ignores significant whitespace
Revision of SpelCompiler support, resolving a subpackage cycle through moving CodeFlow and CompilablePropertyAccessor to the main spel package

Also contains explicit ClassLoader management, passed through StandardBeanExpressionResolver and SpelParserConfiguration to SpelCompiler lookup.

Issue: SPR-10943
SelectedValueComparator defensively handles null values in exhaustiveCompare

Issue: SPR-12001
EhCacheFactoryBean uses reflection to call setStatisticsEnabled method (which allows for building against EhCache 2.7+)

Issue: SPR-11262
Make ListenableFuture compliant with Java 8 lambda

Make it possible to use a ListenableFuture with Java 8
lambda expressions, using a syntax like
listenableFuture.addCallback(() -> ..., () -> ...);

Issue: SPR-11820
Merge pull request #571 from sdeleuze/SPR-11820

Make ListenableFuture compliant with Java 8 lambda
Introduce @SqlConfig for common SQL script config

Prior to this commit, @Sql provided attributes for configuring the
syntax of the referenced SQL scripts as well as exception handling and
transaction behavior; however, such configuration could not be reused
across @Sql declarations thus requiring developers to copy-and-paste
common configuration and resulting in unnecessary code duplication.

This commit addresses this issue by introducing a new @SqlConfig
annotation that can be used to declare common, global configuration for
SQL scripts that can be reused within a test class hierarchy.

 - Introduced top-level @SqlConfig annotation and extracted
   common configuration attributes from @Sql.

 - @SqlConfig can be used at the class level for common, global config
   or via the new 'config' attribute of @Sql for local config.

 - Introduced MergedSqlConfig as a holder for the merged values from
   local and global @SqlConfig instances. MergedSqlConfig also contains
   the logic for overriding global configuration with local
   configuration.

 - Refactored all attributes of @SqlConfig to be either of type String
   or custom enums in order to support overriding. Empty Strings or
   DEFAULT enum values imply the use of a default or inherited value.

Issue: SPR-11896
Merge from sbrannen/SPR-11896

* SPR-11896:
  Introduce @SqlConfig for common SQL script config
Rename default to testCache in Cache related tests

This simply renames the default cache from "default" to "testCache" as
this might be a reserved names for third party cache providers.
Add cache abstraction tests using JSR-107

This commit adds an extra test implementation that runs the cache
abstraction tests using a JSR-107 cache manager. This further covers
JCacheCacheManager.

The actual JSR-107 implementation is ehcache-jcache that requires at
least ehcache 2.8.3. Since the ehcache-core artifact is no longer a
public artifact, this commit switches to the full ehcache library,
that is net.sf.ehcache:ehcache
Remove unnecessary warning suppression in ModelResultMatchers
Polish Javadoc for MergedSqlConfig
Simplify logic in MergedSqlConfig
Update Javadoc in SqlScriptsTestExecutionListener
Update Javadoc in SqlScriptsTestExecutionListener
Renamed JCacheEhCacheTest to JCacheEhCacheTests
ClassUtils.isCacheSafe defensively catches SecurityException (for Google App Engine compatibility)

Issue: SPR-12002