XD-444 Make External Server Rules Optional

When Redis and/or Rabbit is not available (e.g. on developer
machine), the tests should not fail.

However, if the servers are not available on the CI server, the
tests should fail.

Add an environment variable XD_EXTERNAL_SERVERS_REQUIRED. Gradle
passes environment variables to worker tasks.

When true, the tests will fail; when false, the tests will be
skipped.

Set the environment variable on the CI build plan to true.

Fix all Redis tests to use the RedisAvailableRule. Some tests
needed @Configuration of the connection factory because when
declared in XML it eagerly connects to Redis.
XD-431 - Make toString() payload conversion optional
XD-431 - Performance optimization to prevent calling resolvePayloadTransformerForMessage() on every message if there is no transformer
XD-444 Add RedisAvailableRule to New Test

Missed in previous commit.
XD-401 Post data to http endpoint
Added command line option "post http" with "--target" and "--data" options
Added support to output request/response/error as handled in rest-shell
Added better error handling
XD-384 - Polished Controllers and Deployers
Split Client interface between Streams and Taps
Implemented Exception propagation to the client
XD-443 Add MQTT Source

Parameters:

clientId (default 'xd.mqtt.client.id' from mqtt.properties)
topics (default 'xd.mqtt.test' from mqtt.properties)

See mqtt.properties for other properties such as broker
url.

To test:

Install RabbitMQ mqtt plugin

'mqtt | log'

Go to rabbit console, find queue 'mqtt-subscription-xd.mqtt.client.idqos1'
and publish a message to it.
XD-447 Add MQTT Sink

Parameters:

clientId (default 'xd.mqtt.client.id.snk' from mqtt.properties (+.snk))
topic (default 'xd.mqtt.test' from mqtt.properties)

See mqtt.properties for other properties such as broker
url.

To test:

Install RabbitMQ mqtt plugin

Create two streams:

'time --interval=5 | mqtt'
'mqtt | log'

Note: mqtt requires unique client ids; the mqtt source has been changed so
that its default clientId is now 'xd.mqtt.client.id.src' from mqtt.properties (+.src)).

XD-447 Add MQTT QOS and Retained Parameters

--qos=   --retained=
Fixing intermittent stest failures
Ditto for taps
XD-374 Add command to list taps

* Add several utility classes for rendering textual contents to the console (E.g. text tables). Migrated from Cloud Foundry Maven Plugin / Hadoop Samples project.
* Align rendering of the Spring XD Shell banner with the Spring Rest Shell
* Add several missing package-info.java files

XD-374 Code review + add tests
XD-466 Add Json support to Tuple
XD-466 - renamed JSon to Json and minor changes per PR review comments
XD-466 - revert build.gradle
XD-476 correct the AbstractRedisRepository to delete the correct key based on the repoPrefix
XD-388 Add webhdfs dependencies to classpath

Add jar files needed to use webhdfs for hdfs sink
Merge branch 'XD-476' of github.com:datianshi/spring-xd into datianshi-XD-476
Merge branch 'XD-466'