registry: publish UnitState with TTL

Fix #783
server: only parse cfg.AgentTTL once
Merge pull request #788 from bcwaldon/783

registry: publish UnitState with TTL
agent: launch immediately after loading for new jobs
Merge pull request #790 from jonboulle/agent

agent: launch immediately after loading for new jobs
engine/agent: fix reconciliation triggers

Listen indefinitely instead of returning after the first trigger event.

Agent should be listening to JobTargetStateChangeEvent.
registry: simplify EventStream further

Actually use EventStream interface with etcdEventStream implementing it

Remove "listen" set, as no longer used to filter events
registry/event: further simplification

Can now share a single EventStream object between the engine and agent
(since Next is goroutine-safe).

Simplification of various constructors as there are no error cases.
Merge pull request #791 from jonboulle/trigger

engine/agent: fix reconciliation triggers
agent: add global unit support to reconciler
agent: remove unnecessary TargetMachineID
engine: do not consider global units for scheduling
fleetctl: update to deal with global units

All fleetctl operations on global units are non-blocking. Updated
command descriptions to reflect this.

suToGlobal is shared across commands and so now moved to fleetctl.go

setTargetStateOfUnits should only care about DesiredState, not
CurrentState, of units it is attempting to modify.

Also standardises behaviour and error message reporting across commands