Defer WebApplicationContext initialization

Update SpringBootServletInitializer so that the WebApplicationContext is
not initialized until ServletContextListener.contextInitialized() is
called. This makes it easier to subclass SpringBootServletInitializer
to add additional listeners to be called in a specific order.

Fixes gh-2070