fix(agent): Report UnitState only when appropriate

Fix #446
fix(fleetctl): don't error out on empty list-machines
Merge pull request #457 from jonboulle/457

fleet prints error on `fleetctl list-machines` against empty cluster
feat(types): Enable mount, automount, device unit types

Fix #235
fix(test): Use correct fmt verb for boolean
test(unit): Assert more units types unsupported
Merge pull request #458 from bcwaldon/unit-types

Support mount, automount, device unit types
Merge pull request #456 from bcwaldon/446

fix(agent): Report UnitState only when appropriate
fix(engine): Clear UnitState before Job target

The rest of the cluster reacts to clearing the Job target, so we must
clear the UnitState first to prevent race conditions.
fix(agent): Align handling of Job unschedule/destroy events

The EventJobDestroyed and EventJobUnscheduled events can be handled
by common code since they both want to accomplish the same thing.
Note that this fixes a bug in HandleEventJobDestroyed where conflicting
Jobs are never bid upon after destruction.
Merge pull request #461 from bcwaldon/machine-removed-ordering

fix(engine): Clear UnitState before Job target
fix(test): fix gofmt invocation
Merge pull request #460 from bcwaldon/local-unload

fix(agent): Only react to EventJobDestroyed if job scheduled locally
Merge pull request #462 from jonboulle/fix_gofmt

fix(test): fix gofmt invocation
fix(agent): Clear UnitState before unscheduling on shutdown

On graceful shutdown, an Agent must clear each individual Job's UnitState
before unscheduling it. If an Agent takes these two actions in the
opposite order, it runs the risk of deleting legitimate state from the
Registry that was published by a different Agent.
Merge pull request #463 from bcwaldon/agent-shutdown-order

fix(agent): Clear UnitState before unscheduling on shutdown
refactor(fleetctl): Remove unused vars
feat(fleetctl): block forever on load/unload/start/stop
Merge pull request #455 from bcwaldon/fleetctl-blocking

Block forever in fleetctl operations
refactor(machine): Separate HasMetadata from Machine