refactor: get rid of the return values from Command.run().

Output all the output to the logger from the command. Return anything on
success, raise an exception (caught from main.py) on error. Use the command's
object attributes to indicate whether we should continue with resolving or
setting an explicit command return value.
rename: YumTerm -> Term.
download_packages: propagate the librepo exception (RhBug:1035164)
py3: fix exception catching from 96128b8.
wip: the Command doc
remove: basecmd parameter to Command.run()

It is not used for anything except the hack in list/info which there are handful
of ways of handling nicely.
doc: api: dnf.cli. Commands and resgistering them.

This is essential for plugin authors who wish to register their own commands.
remove: Command.needTs*(). Unused.
api: plugins: transaction() hook called after a transaction. (RhBug:967264)
Show correct installed size. (RhBug#1040255)
get_package_target(): don't use yum compatibility attribute
Fix handling of errors raised when undoing transactions.

Fixed message logged when undoing an unavailable package and
AssertionError raised when undoing a not installed package.
Fix AssertionError raised when undoing a package available in multiple repos (RhBug:1038403)
Let install command recognize '@' (RhBug:1036211)
Let history info command recognize 'last'.
Fix TypeError raised when comparing YumHistoryPackage in Python 3.
api: plugins: add hook for sack ready (RhBug:1038937)
fix: gracefully handle the exception when cannot create the locks directory. (RhBug:1036147)
tests: add repository with delta rpms
tests: test drpm lookup, test basic rpm downloading