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).
Even theano print out warning when stuff like that happens. Just in case there is something wrong and the program get stuck on a lock you are able to know.

Stuff like.
```
INFO (theano.gof.compilelock): Waiting for existing lock by process '14209' (I am process '14210')
INFO (theano.gof.compilelock): To manually release the lock, delete /netmount/ip08_home/germainm/.theano/compiledir_Linux-2.6.32-358.14.1.el6.x86_64-x86_64-with-centos-6.4-Final-x86_64-2.7.5-64/lock_dir
```