registry: remove dead Lock* functions
etcd: add Set.PreviousIndex
role: introduce roles and leases
engine: switch from lock to role lease
registry: remove dead locking code
engine: add basic timer to Reconcile
Merge pull request #616 from jonboulle/units

Expose fleet unit count in MachineState
Merge pull request #641 from jonboulle/enginetime

engine: add basic timer to Reconcile
engine: introduce Purge
Merge pull request #640 from bcwaldon/engine-lease

Switch from engine "lock" to "leased" engine leader role
functional: clean up after jonboulle
Merge pull request #642 from bcwaldon/fix-functional

functional: clean up after jonboulle
unit: move multivalue line check into parse func
unit: add tests for parseMultivalueLine
Merge pull request #643 from bcwaldon/test-unit

Add missing test coverage for unit.parseMultivalueLine
machine/resource: add basic resource reservation information

This exposes basic resource reservation information in MachineState. The
current approach for calculating free resources is extremely simple:
assume a fixed block of resources (HostResources) is reserved for usage
outside of fleet units (e.g. by system processes and fleet itself), and
subtract the aggregate resources that have been reserved explicitly
using fleet directives.
Merge pull request #622 from jonboulle/resources

Basic resource reservations
engine: add partitioning based on unit count

This reworks the partitioning framework, simplifying it dramatically in
light of the new engine reconciler model. It also implements functional
partitioning of the cluster based on the recently-added LoadedUnits
count in MachineState.
Merge pull request #645 from jonboulle/engine

engine: add partitioning based on unit count
engine: schedule directly for jobs with resource reservations