tests: rename MockYumBase to MockBase.

reflects the real code better.
repo.metalink_data is gone (RhBug:1020934)
removed needless flush from output.py
fixed shadowing of variable
expired repos are saved in json instead of shelve
full Python 3 support added
refactor: split Output and Base objects in CLI.

This ends one of the most unfortunate hacks of the DNF codebase. Have output as
an attribute of the BaseCli instead. Drawback is the Output instance now needs
backreference to the base, because just giving it conf wouldn't work (it's
replaced during read_conf_file()).
tests: fixed broken test_installPkgs_notfound().

missed from c92079e.
tests: rename: FakeTerm->MockTerminal.

We don't really have defined what is Fake and what is Mock, but most are Mocks.
remove extra member variable assignment in Base._goal2transaction().

Thanks rholy for catching this.
remove: use of weakref.proxy.

Being used randomly and non-systematically, it's dubious whether they help with
memory usage in our case.
cli: cosmetic: remove two extra newlines before 'Dependencies resolved.'

Left behind after 40a4534.
comps: adapt to the latest libcomps that correctly throws KeyError in dict[].
cli: add Command.canonical().

Don't do the command canonizing in cli.py, it belongs in the Command.
fix: traceback 'dnf -v group list Group'.

sack is unfortunately yet another thing that Output needs from Base.
tests: fix GroupOutputTest.

Broken by a9b1aca.
commands: recognize one-word group commands (e.g. 'grouplist') (RhBug:1020101)
fix: traceback in 'dnf group summary' (RhBug:1019957)

'group summary' is now supported.
cli: do not display 'Setting up ... Process'.

It's silly. Also the 'Done' message when certain group commands are
done. It's obvious to the user they're done because he gets the bash
prompt again.
refactor: cli: command.getNames() is now command.aliases.

Also turn command.canonical() into a class method. All this so that commands
don't need to be instantiated just to check if command line matches them.