engine: collapse Reconciler and dumbReconciler
engine: break out scheduler from reconciler
agent: move AbleToRun to AgentState
agent: verify comment
engine: drop offers; pick first capable agent
engine: refactor clusterState; track changes during reconcile
engine: schedule to agent with least number of units
machine: stop publishing MachineState.LoadedUnits
Merge pull request #728 from bcwaldon/sched

Drop job offering; schedule based on loaded unit count
event: ignore event index

Since the content of events is no longer used to drive the Engine
or the Agent, handling all events in order no longer matters.
event: simplify event code

* remove event.EventBus
* move Event definitions into registry pkg
* make EventStream code less async
* establish registry.EventStream interface
registry: watch job namespace for events
Merge pull request #751 from bcwaldon/event-triggers

Simplify event triggers
engine: check AbleToRun for seemingly healthy jobs
agent: don't worry about ability to run jobs
Merge pull request #754 from bcwaldon/agent-no-unschedule

Agent no longer unschedules work
unit states: further support for multiple unit states

- add UnitName field to UnitState
- overlay legacy unit states when retrieving from registry
- update fleetctl to retrieve just States from registry
fleetctl: split out new list_unit_schedule command
fleetctl: remove hash, add sub to default list_units fields
job/registry: split out new Job/Unit structures

- add new ScheduledJob struct to represent the state of a Job's
  scheduling according to fleet (corresponds directly to `fleetctl
  list-unit-schedule`)
- add new JobUnit to encapsulate a unit file (corresponds to `fleetctl
  list-unit-files`)
- add associated Registry methods: JobUnits() and ScheduledJobs()