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.