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
XD-1388: Upgrade to batch M3
XD-1378: create tcp-client options

apply to tcp sink

Use a separate option for direct buffers
XD-1394: Upgrade to spring 4.0.2
XD-1328 Modularize UI (Part 1)

- Add RequireJS support for the main app
  - Add RequireJS configuration for xdAdmin app
  - Define AMD modules
  - Bootstrap app with these modules
  - Disable minification of js files for now
- Update/modify grunt tasks
  - Change yeoman.app -> xd.app
  - Remove unused grunt tasks
  - Modify bower components targetDir to use lib/
  - Remove bower components that are not used
  - Adde more comments and fixe some of the grunt build tasks
- Modularize controllers

TBD:

 - Support minification of JS files with requireJS optimizer
 - Fix karma unit tests and add requireJS support
 - Modularize controllers and services further to define
   individual AMD modules for each controller/service.

Jira: https://jira.spring.io/browse/XD-1328
XD-1408 ensure singleton ContainerMetadata
XD-1393 support ZK client connection string
XD-1393 Fix zkClientConnect option

- Fix zk.client.connect option to use empty value instead of ''
- Remove command line options so that this property can only be
  configured either from application.yml or config/xd-config.yml while
  the later has the highest precedence.
  - Fix the related ZookeeperClientConnectTest
- Fix ModuleOptionsDefaultsOrderingTests' application-test.yml to include
  the `zk.client.connect` property
Move gemfire metadata to gemfire project
Fix broken script tests

Options Ordering: restore ENV.
Fix tail options.
XD-1406 Upgrade groovy

-Upgraded groovy `testCompile` dependency to `2.2.2`
Fix JobExecutionListener support

- Add all the available JobExecution listeners to the
  batch job module being loaded.

This will make sure to add the built-in job execution listener
as well as the custom job execution listener if added in the batch
job configuration.

- Fix the jdbc_tests script to use the correct tap channel
  to receive notifications
XD-1343 Added XD extension mechanism

changes per review comments

replaced META_INF with META-INF

supports multiple base packages and locations
Fix NPE in ExtensionsTests
XD-1396 Fix ContainerRegistrar event handler

The ContainerRegistrar should only process the ContextRefreshedEvent from
the ContainerServerApplication's context refresh event. When an external
management server used, then its context refresh also triggers the
ContainerStartedEvent.
 - Fix ContainerRegistrar's event handler to process the event's source
applicaton context ID equals to that of containerID from ContainerMetadata.