Refactored job scheduling to support multiple backends, e.g. slurm, OpenPBS, SGE and LoadLeveler.