refactor: cli: massively simplify how errors are propagated from do_transaction().

Using exceptions and loggers conveniently eliminates the need for the clumsy
(code, error_messages) tuples while making the handling more flexible overall.
cli: sort packages in the transaction summary.
c82267f refactoring droppped plugins.run_transaction().

Also the cult classic "Complete!" message. Ooops.
groups: promote unknown-reason installed packages to 'group' on group install. (RhBug:1116666)
refactor: loggers are module-level variables.

They are design to be that way, not instance attributes.
lint: rudimentary cleanups in tests.support.
lint: test_cli.py
refactoring: cleanup and linting in dnf.exceptions.
refactor: move Term into its own module.
move: test_output to tests/cli.
transifex update
refactor: extract CLI cachedir magic to cli.cachedir_fit.
wip