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 ScheduledUnit 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 ScheduledUnits()
fleetctl: update commands to use new registry calls
fleetctl/registry: rename functions
  - fleetctl list-unit-schedule ==> fleetctl show-schedule
  - registryScheduledUnits() ==> registry.Schedule()
docs: update fleetctl doc to reflect new commands
registry: add more test coverage, sort UnitStates
functional: update to work with new state models
Merge pull request #756 from jonboulle/lu

split out fleetctl into jobs/units/schedules
agent: simplify desired state construction
agent: move task-related code to task.go
agent: serialize tasks through taskManager
agent: refactor to use taskChain