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
refactor(machine): Drop return value from Machine.RefreshState
refactor(machine): Separate Machine iface from CoreOSMachine impl
refactor(machine): Make refresh an impl detail of CoreOSMachine
fix(machine): Protect CoreOSMachine with mutex
Merge pull request #470 from bcwaldon/machine-interface

Refactor machine pkg to use interface
refactor(systemd): Rename SystemdManager -> UnitManager
refactor(systemd): Introduce unit.UnitManager interface
Merge pull request #471 from bcwaldon/UnitManager

Add UnitManager interface
refactor(test): Move fleetctl tests to functional/
Merge pull request #472 from bcwaldon/move-fleetctl-tests

Move integration-tests/* to functional/*
fix(agent): log all unit state changes
Merge pull request #474 from jonboulle/state

fix(agent): log all unit state changes
refactor(agent): Move logic from HandleEventJobOffered to MaybeBid
refactor(agent): Move logic from HandleEventJobScheduled to JobScheduled