Changed the way jobs are handled concurrently

Now, jobs can be run simultaneously rather than in order.  Both master
and worker send a jobID before any other message traffic to allow for
routing of the message to the correct job recipient.  Both master and
worker maintains a mapping from jobID to a MasterJob or Job,
respectively, that allows them to have an arbitrary number of concurrent
jobs running at any given moment