Revised exitTypeDescriptor handling to avoid NPEs

Issue: SPR-12014
AbstractApplicationContext logs initialization exception before trying to cancel refresh attempt

Issue: SPR-12010
AbstractMessageListenerContainer calls "Session.recover()" in case of rollback attempt on non-transacted Session

Issue: SPR-12015
ResourceHttpMessageConverter does not call contentLength() on InputStreamResource

Issue: SPR-12017
Restore method signature in ViewControllerRegistration

Issue: SPR-12016
Fix issue with @EnableWebMvc + existing ViewResolver

Issue: SPR-12013
Polish
Remove awaitCloseStatus in SockJS integration tests

A CloseStatus may not be received if the connection is closed while
the client is between XHR polling requests.
Update MockMvcConfigurer support

This is a follow-up on the commit introducing MockMvcConfigurer:
https://github.com/spring-projects/spring-framework/commit/c2b0fac852dd9f865699fb374ad78543767fec05

This commit refines the MockMvcConfigurer contract to use (the new)
ConfigurableMockMvcBuilder hence not requiring downcasting to
AbstractMockMvcBuilder.

The same also no longer passes the "default" RequestBuilder which would
also require a downcast, but rather allows a RequestPostProcessor to be
returned so that a 3rd party framework or application can modify any
property of every performed MockHttpServletRequest.

To make this possible the new SmartRequestBuilder interface separates
request building from request post processing while the new
ConfigurableSmartRequestBuilder allows adding a RequestPostProcessor
to a MockMvcBuilder.

Issue: SPR-11497
Ensure Undertow 1.1 compatibility

Issue: SPR-11914
Generate bracketless tag id in Velocity forms

Before this change if Velocity Spring form macro was bound to a path
which contains square brackets, those brackets would also appear in id
of generated tag, making the id invalid.

As of this fix all Velocity Spring form macros generate tag with id
that does not contain square brackets.

Issue: SPR-5172
Polish
Add Google Protobuf support with a MessageConverter

This change adds a new HttpMessageConverter supporting
Google protocol buffers (aka Protobuf).
This message converter supports the following media types:
* application/json
* application/xml
* text/plain
* text/html (output only)
* and by default application/x-protobuf

Note, in order to generate Proto Message classes, the protoc binary
must be available on your system.

Issue: SPR-5807/SPR-6259
Polish
Support Groovy scripts in the TCF

"Work In Progress":

 - Introduced getResourceSuffixes() in AbstractContextLoader in order
   to support multiple resource suffixes in the default detection
   process. This feature is used by GenericGroovyXmlContextLoader.

 - Introduced GenericGroovyXmlContextLoader which supports both Groovy
   scripts and XML config files for loading bean definitions.
   Furthermore, it supports "-context.xml" and "Context.groovy" as
   resource suffixes when detecting defaults. A default XML config file
   will be detected before a default Groovy script.

 - DelegatingSmartContextLoader uses reflection to choose between using
   GenericGroovyXmlContextLoader or GenericXmlContextLoader as its XML
   loader, depending on whether or not Groovy is on the classpath.

 - Groovy scripts can be configured via the 'locations' or 'value'
   attributes of @ContextConfiguration and can be mixed with XML config
   files.

Issue: SPR-11233