Pool of workers

Added a new option to `smart_dispatch.py` allowing to use a pool of workers. The main reason to use this new option is when you expected your jobs to be of different durations. When a worker finishes excuting a command, it will immediately start working on the next one. Thus will reduce the number idle CPU in a node.

Basically you set the number of workers you want using `--pool N` and it will spawn as many workers to execute a common list of command (the commands are spanned by `smart_dispatch.py` as before).
I don't see the usefulness of knowing that a file is locked or not, we only need a mutex on that file.