Work on generic mechanism for controlling multiple jobs

I'm still working through some ideas on exactly how to implement some
aspects of multiple job control, but it's starting to take shape.

I also changed a few internals, I added a separate status field
to the job object instead of using the flag field to keep track
of job status.

I also added a bunch more job types, which allows a lot more flexibility
in running jobs concurrently.