Task level parallelism

Introduced a new class that caters for task level parallelism. Now,
each task is handled by a different worker when we have more workers
than tasks for each job.
Merge branch 'master' into develop
Scripts and class files
Merge branch 'master' into develop