Add RoundRobinChooser
Split WorkSender into WorkSenderProtocol and WorkSender (Factory)

The WorkerSender(Factory) will round-robin work requests to available
WorkSenderProtocols
ResultSender implements IResultSender
Add ResultReceiver