Allow different jobs to require different number of CPUs.

The number of CPUs a job requires is now specified in the job
definition. The queue will only run jobs in the order they are given,
but will try to run jobs as soon as it it has enough free processing
power.

A new thread is now spawned by the queue every time a new job is
started. It might be worth investigating whether this causes memory
leakage.
Added example usage.