XD-2408 Fix tap re-deploy issue

   - When a tap is undeployed, the associated tappable module output channel entry was
removed from plugin. We should remove the entry only if the main stream is
undeployed.
      - This way when a tap is re-deployed, the corresponding tap channel
is bound to the module output channel.
XD-2397: Fix CNFE in tcp-client module
Update `grunt-contrib-imagemin` to `0.9.2`
XD-2107/1048 SpEL for metric name and counter value in aggregate counters
* XD-2107 - Aggregate counter can increment by SpEL over message
* XD-1048 - Dynamically select metric name using SpEL
* Fix metric name option
* Fix typo and rich-gauge phantom creation
Workaround latest boot snapshot issue
XD-2423 Defer WireTap Until Tap Channel Bound

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

Previously, the `WireTap` was added to the module `output` channel
before the channel was bound to the bus,

There is a race condition where the main stream can start sending
to the tap before it is bound to the bus,  causing 'Dispatcher has no subscribers`
errors. In 1.0.x this would prevent the message from being sent to the
main stream. In 1.1.x, taps run on a different thread so it's just log
noise.

Defer adding the `WireTap` to the tapped module's `output` channel
until it has been bound to the bus as a pub/sub producer.
Fix Test Timing Issue

Caused Travis failure.
XD-2422 Fixed version numbers for NPM/Bower dependencies

* Upgrade UI dependencies for NPM and Bower
XD-2306: Allow upload of modules

Renamed composed() -> module()

Add tests for module upload

Disable upload command when not 'connected'

Add ability to delete in exploded form

Make xd.customModule.home the default for R/W registry

Use spring-module as file name
Fixed ModuleCommandTests
XD-2332 Server-Side CronExpression Validation

* Add validation REST endpoint
* Add AngularJS directive to perform async validation

XD-2332 Code Review Changes

* Add integration tests for ValidationController
* Rename `CronValidationDto` to `CronValidation`
* Move `CronValidation` to REST domain module
* Improving Async Validation
XD-2377 Dynamic release links in UI "About" page

* Provide XD version info via `/management/info`
* Add AngularJS service to retrieve version info
* Add version info to About page

XD-2377 Code Review Changes

* Add integration test
* Create a dedicated `VersionResource` class
* Add `VersionController`
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-2378 Add ability to logout using the Admin UI

* 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 Code Review Changes