Add cluster communication

This commit introduces the cluster communication.

- Healthcheck and termination of dead nodes
- Commissioning and decommissioning of workers
- Assigning work to workers
Better EC2 S3 communication
Let a worker retry
Restucturing of logic

Since `Scheduler` became a God Class, I split the components up
into several smaller sections.

Additionally a Chaos Monkey was introduced to simulate real-life
failures
Restored some accidently deleted lines
Small refinements
Merge pull request #22 from snorberhuis/jgroups

Jgroups