Polish .gradle file formatting to use tabs

Replace spaces with tabs for consistency with Java source code
Polish quote styles in gradle files

Replace singe quote-marks with double quote-marks when possible for a
more consistent style.
Use consistent Gradle dependency style

Update all Gradle files to use a consistent style when specifying
dependencies. All dependencies are now specified using parentheses,
for example:

   scope("group:artifat:version")
or scope(project(":projectname"))
Removed unused gradle import

Remove the unused ProjectDependency import from the Gradle build file.
Upgrade log4j dependency to version 1.2.17

Upgrade to the latest stable release of log4j. The previous 'jms'
and 'jmx' exclusions are not longer required since these have now
been marked as optional dependencies in the upstream POM.
Depend on javax.servlet for version 3.0 API

Replace tomcat servlet-api 3.0 dependencies with the javax.servlet
versions that are now available in the Maven central repository.
Convert Gradle build to use new propdeps-plugin

Replace existing 'optional' and 'provided' Spring specific build
extensions with a new Gradle propdeps-plugin. Optional and Provided
dependencies are now defined use dependency configurations.

The new plugin does not currently support the notion of optional
runtime dependencies. All optional dependencies are implicitly
part of the 'compile' scope. This is an intentional design decision
that aims to keep both the plugin and the build simple. Since optional
dependencies are non-transitive this restriction should not cause
any real problems for existing users. The only existing dependency
affected is 'commons-io' in the 'spring-beans' project, however, this
was an optional compile scope dependency in the previous Spring 3.1
release.

Both provided and optional dependencies are no longer exported from
generated eclipse .classpath files. This fixes several tests that
would previously fail when running within eclipse. The servlet-api
specific elements of ide.gradle are also no longer required.

Issue: SPR-9656, SPR-10070
Remove superfluous exclusions from Gradle build

Remove several dependency exclusions from the Gradle build that are
no longer required and were not present in Spring 3.1.
Refactor merge-artifacts script to a plugin

Refactor the existing merge-artifacts script to a full Gradle plugin.
The new plugin uses a 'merge' extension in favor of Gradle 'ext'
configuration and can be applied to all projects in a multi-module
build.

Any project that defines a 'merge.into' project will now implicitly
receive a dependency to that project. Furthermore other projects
with a dependency on 'merge.into' will receive a direct project
link within the IDE. For example: 'spring-webmvc-tiles3'
is merged into 'spring-webmvc' and 'spring-test-mvc' depends
on 'spring-webmvc'. Within the IDE 'spring-test-mvc' will show
dependencies to both 'spring-webmvc' and 'spring-webmvc-tiles'.

Issue: SPR-10042
Upgrade reference plugin to version 0.2.3

Upgrade to the latest reference plugin, providing slightly refined
titlepage and admon graphics.
Renamed buildsrc to buildSrc

Rename buildsrc folder to buildSrc to follow Gradle conventions.
Move Merge plugin into a build package structure
Add buildSrc to generated eclipse project

Post process the generated 'spring' eclipse project to include the
buildSrc/src/main/groovy folder.
Merge plugin copies exclude rules

Previously the 'merge from' project's configurations exclude rules were
not used in the dynamically created 'merge into' project configurations.
This meant that the pom generation for 'merge into' project did not
exclude the dependencies from the 'merge from' project's configuration
excludes.

Now the exclude rules are copied into the dynamically created
'merge into' project's configurations.
Make DeferredResult extensible

Previously it was cumbersome to associate data or behavior to a
DeferredResult because it was marked as final and had no extension
points.

Now DeferredResult is non-final which allows subclasses to associate
additional data and behavior to it.

Issue: SPR-10059
Merge pull request #199 from rwinch/SPR-10059

* SPR-10059:
  Make DeferredResult extensible
Update test tiles.xml files to use v3 DTD

Update tiles.xml files used with tests to reference tiles-config_3_0
instead of tiles-config_2_1 DTD.

Prior to this commit tiles based tests would fail when building
offline or behind a proxy server.
Document WebApplicationContext support in the TCF

This commit adds Javadoc documentation for the WebApplicationContext
testing support that was recently introduced in the Spring TestContext
Framework.

Issue: SPR-9864
Ensure buildSrc is only added once to eclipse
Reformat the Testing chapter

Reformatted the Testing chapter in preparation for upcoming changes.