fix(target): Encode hyphens as _2d in systemd unit path

This is a partial fix for the bigger problem detailed in issue #13.
refactor(target): Wrap job payload in systemd unit file

* Reduce the amount of information a client has to provide when creating
  a job to the command that should be run. This allows us to change how
  we use systemd internally and offloads the work of forming a valid
  unit file from the client onto coreinit.
* Create a custom systemd target on startup. The name of the target is now
  generated from Machine.BootId so multiple copies of coreinit can run on
  a single logical server.
refactor(machine): require caller of machine.New to provide bootId

In order for Machine.BootId to be overridden at the coreinit.go
entrypoint, that value must be pushed through the entire system.
feat(main): Allow client to pass in -bootid flag

The -bootid flag will override the system-level boot ID, which is necessary
for running multiple copies of coreinit on a single logical server.
refactor(registry): Replace GetAllMachines with GetActiveMachines

The set of active Machine objects is more useful than the set of all Machines,
as the one client of this method is attempting to make scheduling decisions
based on who can currently execute jobs.
fix(agent): Always attempt to start a job if it isn't found locally

In the event that a job is scheduled for a machine but it is clearly
not found locally, it makes sense to attempt to start it no matter what.
refactor(target): Create GetSystemdTargetName helper method