XD-1359 Added EmbeddedZooKeeper

Added ZooKeeperConnection and ZooKeeperConnectionListener

Moved ZooKeeperConnection bean to the ParentConfiguration

EmbeddedZooKeeper determines available client port on startup

Updated per review comments
File.pathSeparator -> File.separator
XD-1190: Provide defaults as type.module.option

Remove @Value/@PropertySources support

Rename DefaultsProvidingModuleOptionsMetadataResolver to EnvironmentAwareModuleOptionsMetadataResolver

Make our PropertySource the only one

Add integration tests that check defaults order

Address ordering review comments
XD-1319: Allow mixins of Pojo Metadata
XD-1372 Aligns Spring XD Reactor to Reactor ver1.1

Additional changes include:

- Incorporated an InboundChannelAdapter based on the NetServerFactoryBean which allows for a simplifed configuration of a TCP or UDP server using the Reactor NetServer abstra
- Updated the XML namespace to include the NetServerInboundChannelAdapter configuration and created a parser for the "netserver-inbound-channel-adapter" element.
- Added a test for the new NetServerInboundChannelAdapter
- Added a batching MessageHandler that uses the RingBuffer directly without built-in, other-thread event handling (all events occur in the calling thread). This implementatio
- Since a MessageChannel implementation is now included in the reactor-spring-messaging artifact, the one from this location was deleted.

XD-1372 Update to reflect changes suggested on the PR #625

XD-1372 Update to reflect changes suggested on the PR #625

Completely removed the netserver namespace as the configuration was uncessarily complicated. Now relying on @Configuration JavaConfig to configure the necessary components.

To that end, created a NetServerSpecFactoryBean and changed the NetServerInboundChannelAdapter to accept the spec, which is the Reactor component holding all the pre-start configuration. The FactoryBean now has the logic of parsing a URI and figuring out what components to configure where. If creating a NetServerInboundChannelAdapter in JavaConfig and needing more flexibility than the string-based property-oriented configuration method allows, simply pass in a configured NetServerSpec with whatever options you wish (including ServerSocketOptions like tcpnodelay() reuseAddress() and so on)

Also hacked the tests to simulate an XD module environment by providing a shim between the ModuleOptionsMetadata class and the StringValueResolver needed to properly bind external values into the base @Configuration class.

XD-1372 Tweak to options metadata description PR #625

Polishing

* Reformat to XD rules
* Move `@EnableIntegration` to the base configuration class
* Remove unused env field from factory bean
XD-1386 Separating YARN app install from submit

- Merge and squashed of Thomas PR 632
- Adding new xd-install.sh shell script for copying app artifacts to HDFS
- Client app now takes parameter of --install and --submit with --submit the default
XD-1383 Added basic tests
- filesink
- logsink
- timesource
- httpSource
- TCPSource

* Updated to use Fixtures.
* Added TCPSource and Sink tests.
* Refactored Code

Merge fix

Added FileSource Test

Added FileSource

Updated with tail and file source tests

TCP Source needs another pause for Redis distro.

Updated based on code review.
XD-885 Register job listeners

- Register XD BatchJob listeners automatically `by default`
 - Register `jobExecution`, `stepExecution`, `chunk`, `item` and `skip` listeners
automatically when the job module is deployed by setting the corresponding
job and step parser factory beans with jobExecution listeners and step listeners
 - Removed explicit registration of XD listeners on job modules XMLs
- Added job module option "--listeners" that accepts comma separated names of the
listeners to activate and register. By default, all the above
mentioned listeners are registered;
 - To select specific listeners `--listeners=item,skip`
 - To disable all the listeners `--listeners=disable`

XD-1362

- Make all the listeners to use pub/sub notification channels
 - Created `pub/sub` notification channels specific to each listeners
 - Created a generic BatchJobListener that sends the payload to the pub/sub
notification channels and make all the XD BatchJob listeners extend this.
 - Also, created a `pub/sub` notification channel that all the listeners send
message to.

- Created JobNotification plugin
 - Created JobNotification plugin that binds/unbinds the notification channels
to/from the messagebus with named channels. The named channels created are:
  `tap:job:myjobname.job`
  `tap:job:myjobname.step`
  `tap:job:myjobname.chunk`
  `tap:job:myjobname.item`
  `tap:job:myjobname.skip`
 - Fixed StreamConfigParser to support indexing on the tap channel name for
jobs so that the above notification channel syntax would work.

XD-1363

- To be able to tap job output channel
 - There won't be `output` channel for the job module. Instead, the generic
pub/sub channel created above that sends all the notification messages acts
as the tap with syntax `tap:job:myjobname`. If all the builtin listeners are
disabled, then this won't be available as well.

- Refactored Plugins
 - Created` JobPartitioner Plugin` that does the binding/unbinding operations on
partitioner channels to/from messagebus.
 - Created `AbstractMessageBusBinderPlugin` that shares common methods related to
binding/unbinding producer(s) and consumer(s) to message bus.
 - Created `AbstractStreamPlugin` and `AbstractJobPlugin` that act as parent for
Stream and Job Plugins.
 - Assigned the highest precedence to Stream/Job Plugins so that their lifecycle methods
would always run prior to other plugins (Just in case if any of the other plugins might
depend on them)

Fix review comments

- Renamed `notifications` to appropriate names
- Added validation method to verify the job listener option
and simplified the logic
- Fixed assertions

XD-885 Fix channel names

- Fix channel var names in Listener classes