Polishing
Introduced TomcatLoadTimeWeaver for Tomcat's new InstrumentableClassLoader interface

At the same time, dropped GlassFish 1/2 support from GlassFishLoadTimeWeaver and redesigned it to be as analogous to TomcatLoadTimeWeaver as possible.

Issue: SPR-10788
Turned ByteBufferConverter's visibility to package level
Marked Jackson 1.x support classes as deprecated
Polishing
Comprehensive update to the framework's TimeZone handling, including a new TimeZoneAwareLocaleContext and a LocaleContextResolver for Spring MVC

A few noteworthy minor changes: LocaleContext.getLocale() may return null in special cases (not by default), which our own accessing classes are able to handle now. If there is a non-null TimeZone user setting, we're exposing it to all collaborating libraries, in particular to JSTL, Velocity and JasperReports. Our JSR-310 and Joda-Time support falls back to checking the general LocaleContext TimeZone now, adapting it to their time zone types, if no more specific setting has been provided. Our DefaultConversionService has TimeZone<->ZoneId converters registered. And finally, we're using a custom parseTimeZoneString method now that doesn't accept the TimeZone.getTimeZone(String) GMT fallback for an invalid time zone id anymore.

Issue: SPR-1528
Polish MessageBuilder
Fix MockHttpServletResponse HTTP status update

Prior to this commit, one could call the setStatus method on
this Mock object and update the response's status,
even though the sendError method had already been called.

According to the HttpServletResponse Javadoc, sendError() methods
commit the response; so the response can't be written after that.

This commit fixes MockHttpServletResponse's behavior; setStatus
methods do not update the status once the response has been
committed.

Issue: SPR-10414
Add doesNotExist match to HeaderResultMatchers

Prior to this commit, one could not test for the absence of
a specific HTTP header in a response.
Using header("X-Custom-Header", Matchers.nullValue()) would not
work because it tests for an empty value of an existing header.

This commit adds a doesNotExist method on the
HeaderResultMatcher.

Issue: SPR-10771
Revert "Fix failing test"

This reverts commit c01f45fa59db126e928affccad596eca45c8c202.
Revert "Update Spring MVC Java config for ResourceResolvers"

This reverts commit f8e1f06d08d0401eb44ef832122235300b1b8fac.
Revert "Remove unintended changes from last commit"

This reverts commit 1ba806b1857e33a13d90f4a6d12eb27e01da4f3b.
Revert "Add initial cut of expanded resource handling"

This reverts commit d4a0e628d5c4c5e2a89181d1bb1d3f023673d816, reversing
changes made to 8abe949734414e91e204d14e381be7f922f2dfc3.
Revert resource handling changes

This change reverts recent commits made to expand the resource handling
mechanism in Spring MVC. The changes will move into a separate branch
and likely into a separate project allowing it to mature and evolve
without being tied to the main framework release schedule.

Issue: SPR-10933, SPR-10310
Support AntPathMatch URLs in URL ResultMatchers

Prior to this commit, one could only match exact URLs in redirectedUrl
and forwardedUrl ResultMatchers. When creating a resource with
a REST service, URLs often contain the id the new resource,
like "/resource/12".

This commit updates those ResultMatchers to support both
exact matches and AntPath matches, using new methods.
The former URL then can be tested against "/resource/*" in MVC tests.

Issue: SPR-10789
Polish

Issue: SPR-10789
Merge pull request #379 from bclozel/SPR-10789
Introduce ResolvableType Class

Add a new ResolvableType Class which encapsulates java.lang.reflect.Type,
providing access to supertypes, interfaces and generic parameters along
with the ability to ultimately resolve to a java.lang.Class.

ResolvableTypes may be obtained from fields, method parameters, method
returns, classes or directly from a java.lang.reflect.Type. Most methods
will themselves return ResolvableTypes, allowing easy navigation.

For example:

	private HashMap<Integer, List<String>> myMap;

	public void example() {
 		ResolvableType t = ResolvableType.forField(
 					getClass().getDeclaredField("myMap"));
 		t.getSuperType(); // AbstractMap<Integer, List<String>>;
 		t.asMap(); // Map<Integer, List<String>>
 		t.getGeneric(0).resolve(); // Integer
 		t.getGeneric(1).resolve(); // List
 		t.getGeneric(1); // List<String>
 		t.resolveGeneric(1, 0); // String
 	}

Issue: SPR-10973
Use ResolvableType in GenericTypeResolver

Refactor GenericTypeResolver to make use of ResolvableType
for generic resolution.

Issue: SPR-10978
Use ResolvableType in GenericCollectnTypeResolver

Refactor GenericCollectionTypeResolver to make use of ResolvableType
for generic resolution.

Issue: SPR-10977