refactor: move out main._main()'s inner error handlers.
logging: do not log IOError tracebacks in verbose mode.

Related commit 1ec35442 does the same in plugins.py.
main: log IO errors etc. thrown even during Base.__exit__.

Related: RhBug:1077173
tests: simplify the traceback logging.

The previous version was too ambitious runing main() which unfortunately
had side effects on the file system for the running user. It also called
base.logging.presetup() that added handlers to the dnf logger (shared
across test cases).
persistor: do not save Groups if it didn't change (RhBug:1077173)