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