Some simplifications

Integrated heartbeat into distributor
Made topics static: get using Config.*_TOPIC (This is so every class doesnt keep a reference to the topics.)
Simplified TaskExecutor a bit, only the state is used to make decisions on when to send requests (i.e. not other vars as well)
Only the Distributor should send RESEND_REQUEST signals (not uploaders as well), and even then only in one place (i.e. not when its activated)
    this is to prevent the distributor from dishing out 2 tasks to a worker (which resulted in the first task being lost)
Added a build script