i18n: calculates right width of asian utf-8 strings (RhBug:1116544)

This bug was caused by removing utf8_width_fill and utf8_width functions
in commits d89d7 and 4a500. Functions were refactored to work with
unicode literals and some code was reused from Takayuki Ogawa's (Thanks) patches from BZ
output: fixed identation of info command output
bash-completion: Use grep -E instead of deprecated egrep
bash-completion: Update command and option lists, sort in same order as --help
refactor: concentrate Repo.hawkey_repo construction in Repo.__init__().
repo: simplify how things are propagated to repo.hawkey_repo.

This is a legit use for __setattr__ as overriding Repo.cost and turning it
into a property makes the cost Option blow up up the chain (Config.optionobj()
no longer sees the cost attribute as an option).
Repo priorities. (RhBug:1048973)
Repo.__setattr__ has to use the parsed value.
lint: straightforward lint fixes in dnf.cli.output.
cleanup: imports in dnf.cli.output
cosmetic: use classmethod as a decorator in config.py.
fix: pluginconfpath is a list.
packaging: own /etc/dnf/plugins. (RhBug:1118178)
Ship /usr/bin/dnf-3 to run DNF under Py3. (RhBug:1117678)
packaging: python3-dnf depends on dnf. (RhBug:1119032)

This prevents conflicts when the two packages are not upgraded in
lockstep. Alos we don't have to package /etc, locales etc. twice then.
pkg name from rpm transaction callback is in Unicode (RhBug:1118796)
New version: 0.5.4
build: 0.5.4-1
fix: misleading error message when no repo is enabled.
remove: protected_packages config option, it has been ignored.

Better document how to get the same functionality.