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).
Have you thought of using | fcntl.LOCK_NB also to give some feedback ?

http://stackoverflow.com/questions/9077126/how-to-use-fcntl-reading-status-of-lock-file

When operation is LOCK_SH or LOCK_EX, it can also be bitwise ORed with LOCK_NB to avoid blocking on lock acquisition. If LOCK_NB is used and the lock cannot be acquired, an IOError will be raised 
https://docs.python.org/2/library/fcntl.html