A SimpleReplicationAgent should depend on 
- a set of rules
- a package producer
- a package consumer
- an event factory

A QueuedReplicationAgent should depend additionally on 
- a queue provider
- a queueDistributionStrategy

Properties like useAggregatePaths should be accepted by other implementations that are eventually wrappers over simpler implementations.