Feature/distributed manager

This uses the technique described in http://eli.thegreenplace.net/2012/01/24/distributed-computing-in-python-with-multiprocessing to make it possible to run a number of clients on different computers to share the processing load. Also the normal multiprocessing is rewritten to explicitly starting processes that read jobs from a shared queue instead of process pools.