Remove -XX:MaxHeapSize=256m from default GRADLE_OPTS

This setting was causing failures in the CI build, and was not present
prior to the recent updates to gradle wrapper generation.

This commit also simplifies the gradle wrapper customizations by placing
the logic in a doLast block within the original 'wrapper' task, as
to creating a second wrapper task and extending from the first.
Restore -XX:MaxHeapSize=256m for gradlew.bat

Restore the MaxHeapSize setting for the Windows build only.
Polish
Refine hamcrest dependency in spring-test-mvc project

1) removed the hamcrest-all dependency requirement and replaced it with
the more focused hamcrest-library dependency

2) added MatcherAssertionErrors as a replacement of
org.hamcrest.MatcherAssert, which in hamcrest 1.1 is only available
through the hamcrest-all dependency (and not in hamcrest-core nor in
the hamcrest embedded in JUnit 4.4 through 4.8)

3) changed the required hamcrest version from 1.1 to 1.3 and made sure
the spring-test-mvc project does not rely on newer hamcrest
functionality without checking if it is available first

Applications that already depend on older versions of hamcrest
(in particular 1.1) via hamcrest-library, hamcrest-all or as part of
junit 4.4 through 4.8 should not be disrupted if they add spring-test
but may wish to exclude the hamcrest-library transitive dependency
from spring-test in order to avoid extra jars in the classpath

Applications that depend on hamcrest 1.3 should not have to do anything

Issue: SPR-9940
Initialize FrameworkServlet property sources eagerly

Prior to this change,
FrameworkServlet#configureAndRefreshWebApplicationContext called
 #postProcessWebApplicationContext(wac) and #applyInitializers(wac)
prior to #refresh, but because servlet-based property source stubs were
not replaced until #refresh, any post-processing or initialization
routines could not benefit from accessing the Environment to retrieve
properties from the ServletContext or ServletConfig.

The workaround to this problem is detailed in SPR-9610 - the user simply
needed to call WebApplicationContextUtils#initServletPropertySources
manually within their ApplicationContextInitializer (or overridden
 #postProcessWebApplicationContext method)

This commit ensures that
FrameworkServlet#configureAndRefreshWebApplicationContext calls
WebApplicationContextUtils#initServletPropertySources eagerly, prior to
invoking #postProcessWebApplicationContext and #applyInitializers.
Related Javadoc has also been updated throughout to clarify the behavior
of #initServletPropertySources, when it can be called and what the
effects are, etc.

Note also that a reproduction issue was added to demonstrate the problem
and verify its resolution [1].

[1]: https://github.com/SpringSource/spring-framework-issues/tree/master/SPR-9610

Issue: SPR-9610
Support SQL exception translation for MSSQL 209

SQL Server error 209 [1] will now raise a BadSqlGrammarException.

[1]: http://www.sql-server-helper.com/error-messages/msg-1-500.aspx

Issue: SPR-9946
Respect spring.profiles.active in #addActiveProfile

Prior to this commit, calls to ConfigurableEnvironment#addActiveProfile
would cause any active profile values provided via the
"spring.profiles.active" property to be ignored.

Now these two mechanisms can be used in conjunction and work as
expected.

Issue: SPR-9944
Make hamcrest dependency optional in spring-test

Users of Spring MVC Test will need to list a hamcrest dependency --
either hamcrest-library or hamcrest-all.

Issue: SPR-9940
Add UnknownHttpStatusCodeException

This is more specific exception raised instead of RestClientException
when the raw HTTP status code received from the server is not one of
the HttpStatus enum values.

Issue: SPR-9406
Correct typo in GRADLE_OPTS for Windows

The -XX:MaxHeapSize option should include the 'm' postfix to signify
that the value is megabytes rather than bytes.
Merge pull request #177 from EzequielB/master

* branched_master:
  Correct typo in GRADLE_OPTS for Windows
Develop ConcurrentReferenceHashMap

Develop a new ConcurrentMap implementation that support both weak and
soft entry references. Intended primarily to be used internally to
support fast concurrent caching.

Issue: SPR-9796
Polish Property class
Cache and late resolve annotations for performance

Annotations are no longer resolved in the constructor and are cached
for improved performance.

Issue: SPR-9166
Update cache to support concurrent reads

Change the cache implementation from a synchronized weak hash map to
a concurrent implementation.

Issue: SPR-8701
Merge pull request #146 from philwebb/SPR-9796

* SPR-9796:
  Update cache to support concurrent reads
  Cache and late resolve annotations for performance
  Polish Property class
  Develop ConcurrentReferenceHashMap
Polish whitespace and formatting
Corrected date pattern in JavaDocs

The 'hh' pattern should be 'HH' as ISO dates use 24hr notation.
Support DateTimeFormat annotation without Joda

Dependency on Joda Time when using the @DateTimeFormat annotation is
now optional. If Joda Time is not present the JDK SimpleDateFormat
will be used to parse and print date patterns. If Joda time is
present it will always be used in preference to SimpleDateFormat.

Issue: SPR-6508
Move JRuby dependency below Joda

JRuby includes a copy of joda classes with the same package names.
This commit changes the order of the loaded jars to load the original
joda classes first.