Replaced Map synchronization with ConcurrentHashMap to avoid session access deadlocks

Issue: SPR-10436
Fixed BeanPropertyRowMapper to only prefix actual upper-case letters with underscores

Issue: SPR-10547
Avoid NPE in ContextLoader when dealing with an untyped ApplicationContextInitializer

Issue: SPR-10449
Consistent use of Class<?> in Assert
Consistent detection of Order annotation in superclasses and interfaces

Issue: SPR-10514
Add partial WebSocketMessage support
Fix bug in WebSocketClient implementations
Enforce JDK version on CI server

Add a test to ensure that the CI server does not accidentally build
with the wrong JDK version.

Issue: SPR-10569
Release version 4.0.0.M1
Increment version to 4.0.0.BUILD-SNAPSHOT
Update README adding explicit JDK instructions
Clarify instructions for building from source

Re-order subsections to make it clear that running a full
`./gradlew build` is not necessary just to import projects
into your IDE or to build and install jars to your .m2 cache.
Mention JDK 8 in IDE import instructions
Merge pull request #288 from dsyer/patch-1

Update README adding explicit JDK instructions
Revise note on avoiding "lambda" JDK
Eliminate Gradle 1.6 deprecation warnings

Recently Spring framework build has been updated to use Gradle 1.6.
With the new version some of the Gradle APIs have been deprecated.
These deprecated APIs have been used by Spring build specific Gradle
plugins, which resulted in deprecation warnings in build output.

This patch changes Spring build specific Gradle plugins to use new
Gradle APIs instead of deprecated ones.

Even after this change build still produces warnings about Gradle
deprecated APIs being used. These come from Spring shared Gradle
plugins and other 3rd party Gradle plugins in use, like Gradle
Artifactory Plugin (GAP), which are still not updated to Gradle 1.6.
Related tickets for updating of these plugins to Gradle 1.6 are
GRADLE-53 and GAP-144, and once they get resolved Spring framework
build should further be updated.

Issue: SPR-10572
Fix MergePlugin

The submitted pull requests for SPR-10572 did not build.

This commit fixes the MergePlugin to create from configurations rather
than the project. It also removes unnecessarily added code that was
commented out.

Issue: SPR-10572
Fix minor typo in README.md