**Cherry-pick to 5.0.x & 4.3.x**
* Polishing after rebase
* Copyright to 2019
* Rebase and update according upstream deps
* Do not rely on `spring-web` in classpath: use `ClassUtils.forName()`
to load `ServletContextResource` class for checking
# Conflicts:
# build.gradle
# spring-integration-xml/src/main/java/org/springframework/integration/xml/selector/XmlValidatingMessageSelector.java
# spring-integration-xml/src/main/java/org/springframework/integration/xml/transformer/XsltPayloadTransformer.java
# spring-integration-xml/src/main/java/org/springframework/integration/xml/xpath/XPathUtils.java
# spring-integration-xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java
# Conflicts:
# build.gradle
# spring-integration-xml/src/main/java/org/springframework/integration/xml/DefaultXmlPayloadConverter.java
# spring-integration-xml/src/main/java/org/springframework/integration/xml/splitter/XPathMessageSplitter.java
# spring-integration-xml/src/test/java/org/springframework/integration/xml/transformer/XsltPayloadTransformerTests.java