XD-1338 RabbitMessageBus Paritioning Support

Producers use `partitionKeyExpression` and
`partitionExpression` (optional) applied to the
key. The modulo operation is then applied, with
the module count as the divisor.

If no `partitionExpression` is provided, the bus's
`PartitionStrategy` is invoked; the default strategy
returns `key.hashCode() % count`.

The resulting value is added to the message headers so
it can be used in the routing key expression.

Consumers use their 'partition' property to
determine which queue to listen to.

The deployment supervisor needs to add this
property for each module instance deployed,
such that there is at least one consumer for
each partition.

XD-1338 Producer Partitioning Straw Man

Polishing

Add moduleCount property; declare partition queues.

Pass partition properties (specifically, count) to consumer/producer.

Add Consumer Support

2nd commit message:
Polishing - Support Java Partitioning; PR Comments

If the module deployment properties contains
a class name (for the extractor or partitioner)
it is dynamically added as a bean to the context.

3rd commit message:
Fix Typo in ParameterName

s/partioner/partitioner/

4th commit message:
Polishing - Rename to PartitionSelector
XD-1763 Update to Spring Batch 3.0 RELEASE
XD-1755 changed gemfire source to use client cache
XD-1750 Exception handling at module info cmd

Since the option value gets converted at Shell Converter `QualifiedModuleNameConverter`, throw ShellException in case of invalid syntax or module type.

- Validate the info option syntax
  - Check for ":" and expect at least module type is specified
- Validate the module type
  - throw IllegalArgumentException for invalid module type

Fix `NullPointerException` at ModuleController if module definition doesn't exist for the given module name

- Throw `NoSuchModuleException` if the module definition doesn't exist
- Add test

Address review comments
XD-1750 polishing on merge