Review for xd on yarn (do not merge)

This is a change set to be base for discussion happening later. Commenting later and only on higher level concepts because this is not yet functionally complete.

NOTE: this contains a lot of re-writes for classes which dates back to original spring yarn import.

To be used with xd you need to branches:
https://github.com/jvalkeal/spring-hadoop/tree/boot
https://github.com/jvalkeal/spring-xd/tree/yarn2

Because of a distro flavour circus in shdp and xd, you need to build a distro specific snapshot. I use below trick with shdp:
```
$ cat maven-install-distro-snapshots-hadoop22.sh
#!/bin/bash

# stash original gradle.properties
cp gradle.properties gradle.properties.bak

for ID in hadoop22; do
	echo building for $ID
	echo version=2.0.0.BUILD-SNAPSHOT-$ID >> gradle.properties
	./gradlew -Pdistro=$ID clean install -x javadoc -x test
done;


# restore original gradle.properties
mv gradle.properties.bak gradle.properties
```

From xd yarn2 branch it's then simple as:
```
./gradlew clean copyInstall -x test -x javadoc
```