Restore dependency-tools API compatibility

Refactor dependency-tools to restore API compatibility with Spring
Boot 1.0. This should reduce reflection hacks that tools such as Gretty
would otherwise have to make.

See gh-1035
Generate and attach dependency-tree

Update spring-boot-versions to generate a dependency-tree file and
attach it as an artifact. The file is generated by creating a temporary
POM and calling the invoker plugin.

The spring-boot-versions POM now depends on all spring-boot-starter-*
POMs to ensure that they have been installed before the dependency
tree is processes.

See gh-1047
Support transitive excludes in dependency-tools

Update spring-boot-dependency-tools to support transitive excludes.
Transitive excludes are useful with Gradle which considers each
dependency independently (see GRADLE-3061).

Transitive excludes are supported by parsing the dependency-tree file
from spring-boot-versions.

See gh-1047
Support automatic exclude rules with Gradle

Update the Spring Boot Gradle plugin to automatically apply exclude
rules to dependencies.

See gh-1047
Remove superfluous commons-logging excludes

Update all starter POMs to remove commons-logging dependencies that are
not longer required when using the Spring Boot Gradle plugin.

Mainly reverts code from 196f92bd422778aebe5706b84cc8ffe9bc298878

See gh-1047
Merge branch 'gh-1047'
Add starters to prepare build
Add missing settings.xml file

See gh-1047
Add @Conditionals to permit JPA/Mongo mixed usage

I decided to go with both approaches (make the autoconfig for
repositories @ConditionalOnMissingBean(RepositoryFactoryBeanSupport),
so the first one wins; and also make them conditional on
spring.data.*.repositories.enabled=true. The ordering problem
is still there really (it's not defined which repositories will
be created by the autoconfig), so if a user is going to have
2 repository implementations on the classpath, he is going to
have to either choose one to disable, or manualy @Enable* the
other one.

Fixes gh-1042
Fix compilation error
Add MBeanServer @Bean in case it is needed

Anywhere that an MBeanServer is needed it should be
created @Conditionally, so that user can exclude the
JmxAutoConfiguration and still get the other JMX
behaviours automatically.
Optimized login form - delegated CSRF token creation to thymeleaf

Also added additional test to verify behaviour.

Fixes gh-1039
Fix issues with DeviceDelegatingViewResolverAutoConfiguration

- Log to the correct class
- Set Auto-configure after Thymeleaf hint on main class instead of
  internal static class
- Use 'thymeleafViewResolver' bean name instead of class for
  conditional bean checks
- Fix class name in properties documentation

Fixes gh-1052
Make properties to sanitize configurable in EnvironmentEndpoint.

Add "key" to default keys that will be sanitized. fixes #1027
Polish documentation of @GrabMetadata
Use spring-boot-version for dependency versions in Gradle Jetty example
Add test for gh-1058
Enhance @Conditionals for JMX autconfig

Fixes gh-1059
Polish disable repository documentation
Polish