Fix Assert in VersionResource
XD-2429 Bind Producer Before Consumer

JIRA: https://jira.spring.io/browse/XD-2429

When tapping a fire hose, it was possible to get `Dispatcher has no subscriber`
errors on the first module's `output` channel.

This was because the `AbstractMessageBusBinderPlugin` bound the consumer (`input`)
first and messages start flowing before the producer (`output` is bound.
If the output channel is a `SubscribableChannel`, `Dispatcher has no subscribers`
resulted.

Change the bind order so that the output channel is bound first, then the
inbound channel. Similar to the way we bind modules right-to-left when using
a `LocalMessageBus`, we need to bind the module itself right-to-left.

This is only a problem when a stream starts with a tap because, with a "normal" stream,
the last module to be bound is the source, and we don't start it until the source itself
is bound; hence no messages flow to the downstream processors so it doesn't matter what
order their channels are bound.

With a tap, messages can start flowing from the tap as soon as the input channel is bound to the bus.
XD-2120: Allow file based conf of users and ROLES
XD-2377-2 Add `$scope.$apply` to `about` controller
XD-2331: Single node recovery on disconnect

When a single node server disconnects and reconnects to ZK
(for instance when running on a laptop that goes to sleep)
the leader election routine was failing an assert because
the CuratorFramework was not in STARTED state. This was
happening because the container listener forces a client
shutdown and reconnect to guarantee that all its ephemeral
nodes are cleaned up. This connection is the same one
being passed to the leader election routine.

The fix is to only force the container to recreate the
CuratorFramework if it is not in the STARTED state.
The state transition of SUSPENDED -> LOST -> RECONNECTED
where the framework has restarted seems to happen
consistently when the machine running the process
goes to sleep and wakes up.

XD-2373: Distributed test should verify container shutdown

After each test, block execution until admin indicates that
all containers have been unregistered from ZK.

Destroy streams before container shutdown

Increased state transition timeout

Some tests require deployment to a container after it joins
the cluster. Since there is a mandatory waiting period before
new containers are assigned deployments (15 seconds by default)
the wait period for the verify stream/job state methods has been
increased.
XD-2409 Changing correlation-strategy-expression

- this will avoid some issues ecountered with SpEL (SPR-12502)

- using "payload.class.name" seems to work in all cases
XD-2387 Kafka AcceptanceTests
XD-2333 Add Kafka integration test

- Add kafka test support class that checks for kafka server availablity
  on localhost
- This uses zk server available on default connect string `localhost:2181`
- Add test for verifying kafka source and sink having both the source/sink
  on the same test case will make sure the topic that gets the data by
  kafka sink is actually read by kafka source
- Handle Zk connect exceptions
- Fix create/delete topic in Before/After
- Remove explicit sleep by setting kafka source consumer
  timeout to -1 (blocking)
- Fix import statements
XD-2426: Use new Travis CI build env, add caching

- test cache behavior
- Add debug
- use -PwikiBranch=origin/master
XD-2386 Acceptance tests for tcp-client source

connect to a nc (netcat) server that returns the following value UOHSO638abna9beqw12.
The netcat can be run using the following:
(Mac)
while true; do nc -l -c  8782 < index.html; done
(*nix)
while true; do nc -l -C  8782 < index.html; done

where index contains UOHSO638abna9beqw12

See spring-xd-integration-test/src/scripts for scripts that
launch the nc process as described above.
XD-2381: Split MessageBus and Analytics dependencies from DIRT
XD-2502 Add embedded Kafka server support

- changed KafkaTestSupport to create and shutdown a standalone Kafka server (and associated ZK instance)
- updated the test to use the embedded broker
XD-2490 - Update to use Reactor 2.0 snapshots
XD-2501 upgrade to Spring Boot 1.2.0.RELEASE, Spring 4.1.3.RELEASE and downgrade Reactor to 1.1.2.RELEASE
XD-2501 upgraded boot-gradle-plugin to 1.2.0.RELEASE
XD-2378 Admin UI logout option

* Add `/security/info` REST endpoint, providing security related meta information
* Add integration test for `/security/info` REST endpoint
* Add logout functionality to the Admin UI
  - Ensure the `/security/info` REST endpoint is executed before AngularJS boots
  - Make security meta information available to AngularJS
  - Provide UI components to log out
  - Show the currently logged in user (if logged in and authentication is enabled)
  - If not logged in, redirect to login page

XD-2378 Code Review Changes

XD-2378 Exclude GroovyTemplateAutoConfiguration

XD-2378 Improve test - add `SecurityControllerIntegrationTestsInitializer`
XD-2509 Fix classpath issues for RabbitMQ MessageBus

- override the ThreadContextClassLoader when creating the RabbitMQ consumer, setting it to the MessageBus classloader, thus allowing the proxies based on SimpleMessageListenerContainer$ContainerDelegate to see the proper class
XD-2475 MessageBus Producer Batching

JIRA: https://jira.spring.io/browse/XD-2475

Rabbit: Use a `BatchingRabbitTemplate` if batching is enabled.
Kafka: Set properties

Tested with:

    xd:>stream create foo --definition "time | log"
    xd:>stream deploy --name foo --properties "module.time.producer.batchingEnabled=true,module.time.producer.batchSize=6"

Observe messages appear in log in batches of 6.

    xd:>stream undeploy foo

Observe partial batch is flushed.

(Also added RabbitMessageBus test).

Bump SI to 4.1.1.RELEASE
XD-2316 Fix batch config REST endpoint

 - If the batch job is not deployed and has no entry in batch job repository,
the detailed job info will not be added for that job. We will only show the job
definition/deployment status from XD ZK repositories.
 - Also, make the `/batch/configurations` endpoint to produce only `application/json`
XD-2427 Use repo.spring.io as NPM repository

* Add `.npmrc`
* Add information to `README.md`