Support for job "group ids."

A job can specify a group id, and jobs with the same group id
will run sequentially.