Revert "fix: provides are not recognized for erase command. (RhBug:1087063)"

This reverts commit a4ca8bff5f99adbbf76fa13210c885e19dca6620.

This feature makes CLI commands inconsistent (the others look for providse
too). Also: 'dnf install syslog && dnf erase syslog' fails with nothing to
remove in the second step. Lastly, the Base.remove() API call still does
look for provides of course, so this would introduce further discrepancy
between CLI and API.
cosmetics: leave around the good things from 660c3e5 (documentation, UT).
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.