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: 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
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.