groups: redo the GroupPersistor class.

The old one has a serious design issue that it doesn't allow for storing
additional metadata, i.e. the clients (comps) are directly bound to the
serializaiton (json) mechanism. Adding new attributes is very hard.
Add comps Solver.

A centralized place to decide how different group operations should resolve.
groups: Integrate the redone componenets with Base.

Fix/update all tests.
refactor: extract out the transactioning part of _main().
groups: saving the persistent data.
groups: store format version of the groups db.
remove: OriginalGroupPersistor.