Iteration branch pull request for review.

Directly creating a new instance of a Worker class here means a couple of things.
1. Your dispatcher can only use this Worker implementation.
2. You cannot test this behavior.
So now you have a couple of options. Read very very carefully.
1. If your application can use a single instance of a worker per dispatcher, then it might make sense to move this to a property and inject via the constructor.
2. If you application uses just a single type of worker but a different instance per connection, then it might make sense to create another class for creating these instances ie, a WorkerFactory. You can then inject this factory via the constructor.
Ref: Factory pattern. (http://www.dofactory.com/net/factory-method-design-pattern)
3. Incase your dispatcher creates a different type and instance based on some logic, then you need to use the factory pattern as outlined in point 2 above.