Ensure Parent ConfigurationClass loaded on overrides

Previously ConfigurationClassParser could override a nested
@Configuration without consideration of @Bean's defined in parent
classes.

This commit ensures that if the original ConfigurationClass contains
additional bean definitions it is processed again.

Issue: SPR-10546
(cherry picked from commit 940011e)
Properly handle knownSuperclasses in case of an overridden ConfigurationClass

Issue: SPR-10546
(cherry picked from commit 6e4317e)
Fixed type detection to avoid reuse of parent bean's targetType on child definition merge

Issue: SPR-10374
Polishing
Avoid unnecessary creation of default StandardEnvironment instances

Issue: SPR-10568
Introduced "jsonPrefix" bean property

This change involves a modification of the "writeContent" template method to include the "jsonPrefix" String instead of the "prefixJson" boolean flag. Since said template method has only been introduced in 3.2.2, this change should hopefully not be a problem.

Issue: SPR-10567
Fix bug with deriving SockJS path
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