Restructure packages

Improve package structure and attempt to co-locate related classes.
Consistent use of Ordered constants

Prefer Ordered HIGHEST_PRECEDENCE and LOWEST_PRECEDENCE constants to
Integer MAX_VALUE or MIN_VALUE.
Ordering of Application Initializer and Listeners

Update javadoc and method names to indicate that ApplicationInitializer
and ApplicationListeners are `Order` sorted before being invoked.

Also remove specific sorting from SpringApplicationBuilder, relying
instead on the Order sorting.

Fixes gh-316
Improve Mongo auto-configuration

Disable Mongo auto-configuation when @EnableMongoRepositories is used
and adapt the test helper classes accordingly.

Change the property prefix and dependency management version property
from `...mongo` to `...mongodb` for consistency with Spring Data.

Fixes gh-315
Extract Mongo auto-configuration from Spring Data

Extract Mongo auto-configuration classes from Spring Data specific
auto-configuration, allowing Mongo to be used without Spring Data
if require.
Extract inner configuration property classes

Extract all inner @ConfigurationProperties classes from @Configuration
classes for consistency.
Don't eagerly initialize FactoryBeans

Fix `EmbeddedServletContainerAutoConfiguration` so that it does not
accidentally eagerly initialize factory beans.

Fixes gh-306
Add SpringApplication.setRegisterShutdownHook

Add a setRegisterShutdownHook option to SpringApplication allowing the
shutdown hook to not be registered.

Also update SpringApplicationBuilder to automatically disable shutdown
hooks for child contexts.

Fixes gh-314
Document that applicaiton.yml requires snakeyaml

Update documentation to reference the need for a yaml library to be on
the classpath.

Fixes gh-313
Merge pull request #313 from madorb/master

* pull313:
  Document that applicaiton.yml requires snakeyaml
Prevent 404s in README.md links

Fix links to ensure that they don't cause 404 errors when published to
Github Pages.

Fixes gh-304
Merge pull request #304 from adambro/patch-1

* patch-1:
  Prevent 404s in README.md links
Polish
Apply source cleanup and formatting
Add mainClass option for Repackage task

Add `mainClass` property option to the Repackage task. If the property
is defined within a task, it works in the same way as if it defined
within the springBoot{} 'ext' properties section.

Option is valid only for that specific task where it is defined, and
will override option defined in springBoot{} ext properties.

Fixes gh-283
Merge pull request #302 from jvalkeal/gradle-mainclass

* gradle-mainclass:
  Add mainClass option for Repackage task
Polish gradle repackage task formatting
Update gradle example builds
Move remaining properties for consistency
Revert Automatically detect 'development' profile

Revert commit a97bcfe3cded186ac56b7a727f5c7cc09e3c3ba0 as adding
profiles automatically may be problematic.

Updates gh-296