refactor(job, target): Give JobState/Target a reference to a Machine

It is helpful for JobState to contain the machine on which
it is currently running, so we give it an instance of
Machine. Target creates JobState objects, to it needs a
reference to Machine, too.
refactor(registry): s/GetUnscheduledJobs/GetGlobalJobs/

The plan is to leave jobs at the global level, so they should not
be considered "unscheduled".
refactor(registry): Save entire JobState object on UpdateJob

* Now that JobState has a reference to a Machine, we must save the
  entire object rather than just the State field
* s/UpdateMachineJob/UpdateJob/ - the state of a Job is now stored
  in a global namespace so we can ensure a specific job is always
  running without having to know where the Target is.
fix(scheduler): Replace a println with log.Println
refactor(registry): Stop deleting globally-scheduled Jobs

The global schedule is the entrypoint for clients to ask the system
to run something. These entries cannot be deleted as the scheduler
will not be able to reschedule jobs that fail on any given Machine.
feat(registry): Add GetJobState method to Registry

The GetJobState method of Registry will produce a JobState object
corresponding to the provided Job object.
feat(scheduler): Attempt to reschedule only if a Job has no state

If an Agent has started to report state for a given Job, the scheduler
must not attempt to reschedule it to a new Machine.