Stability fixes, worker pool, logging and separate gatherer

- Made single worker pool process which spawns workers
- Added progress collection to keep track of long running simulations
- Workers now send results via samba
- Workers always reconnect before sending a message
- Worker pool shows progress for all workers
- Added extensive logging
- Added lots of exception handling to try keep workers and server alive on disconnects
- Jobs get distributed fairly based on number of running sims for a user
- Split gatherer from distributor