Fix TomcatContextCustomizers Assert.notNull checks

Correct null assertion checks on setters for TomcatContextCustomizers
and TomcatContextCustomizers
Merge pull request #285 from bstick12/master

* pull285:
  Fix TomcatContextCustomizers Assert.notNull checks
Switch to Spring Framework 4.0.1.RELEASE
Add a command to produce a self-contained executable JAR for a CLI app

A new command, jar, has been added to the CLI. The command can be
used to create a self-contained executable JAR file from a CLI app.

Basic usage is:

spring jar <jar-name> <source-files>

For example:

spring jar my-app.jar *.groovy

The resulting jar will contain the classes generated by compiling the
source files, all of the application's dependencies, and entries
on the application's classpath.

By default a CLI application has the current working directory on
its classpath. This can be overridden using the --classpath option.
Any file that is referenced directly by the classpath is always
included in the jar. Any file that is found a result of being
contained within a directory that is on the classpath is subject to
filtering to determine whether or not it should be included. The
default includes are public/**, static/**, resources/**,
META-INF/**, *. The default excludes are .*, repository/**, build/**,
target/**. To be included in the jar, a file must match one of the
includes and none of the excludes. The filters can be overridden using
the --include and --exclude options.

Closes #241
Support for AuthenticationManagerBuilder injection into user code

Spring Boot provides a default AuthenticatiomManager for getting
started quickly with security and never exposing insecure
endpoints. To override that feature as users move to the next
stage in their project, they may have to do something slightly
different depending on whether it is a webapp or not.

In any app (web or not), providing a @Bean of type
AuthenticationManager always works, but you don't get the benefit of
the builder features.

In a webapp the user can also extend WebSecurityConfigurerAdapter
to provides a custom AuthenticationManager, and the preferred
way of doing that is via a void method that is autowired with an
AuthenticationManagerBuilder. The default AuthenticationManager is
built in a configurer with @Order(LOWEST_PRECEDENCE - 3) so
to override it the user's confugrer must have higher precedence
(lower @Order).

@EnableGlobalMethodSecurity can also be used in a non-webapp, and
Spring Boot will still provide a default AuthenticationManager.
To override it the user has to either extend
GlobalMethodSecurityConfiguration or provide a @Bean of type
AuthenticationManager (there's no other way to
capture the AuthenticationManagerBuilder that doesn't happen too late
in the beans lifecyle).

Fixes gh-244
Add some more detail on security config options
Append context id to objectName of Endpoint MBeans if name already exists in MBeanServer
Update packaged JARs to use standard JarLauncher

Change CLI generated JARs to use the standard `JarLauncher` instead of
a custom `JarRunner`. The `PackagedSpringApplicationLauncher` is used
as the `Start-Class` which in turn calls `SpringApplication.run()`.
Exclude *.jar and *.groovy from generated JARs

Update `JarCommand` to exclude `**/*.groovy` and `**/*.jar` by default.
Polish CLI Jar generation
Pull-up duplicated code to Launcher
Improve exception messages on nested jar failure

Updates gh-284
Added starter for Spring Data MongoDB.

Fixes gh-272
Remove unnecessary @Conditional
Assert that parent autoconfig report is matched to parent BeanFactory

Test for gh-290
Use non-deprecated API to create Mongo client
Fix sample (Exception type changed in Mongo)
Make @ConfigurationProperties available in @PostConstruct

Also means that persistence annotation processing can take advantage
of external properties bound in this way.
Fix AutoConfigurationReport parent location

BeanFactory.getBean() already looks in the parent context
so we have to be careful and not use the parent when locating
the report singleton

Fixes gh-290
Exclude null and empty properties from /autoconfig