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