agent: add test coverage for AgentReconciler
agent: remove unnecessary method receiver
*: split out reconciler behaviour into pkg

Since the agent and the engine now share identical code for their
Reconcilers - and the main loop is quite critical - I think it's worth
sharing the code and giving its own set of tests.
agent: revert DefaultReconcileInterval
Merge pull request #805 from jonboulle/reconciler_tests

pkg: split out PeriodicReconciler from agent/engine, add tests
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
functional: various updates

Update to accommodate multiple UnitStates
Add a simple functional test for global units
agent: add AbleToRun check to reconciler path