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