refactor: repo: separate concepts of 'expiry' and 'sync strategy'.

Related: RhBug:909856
doesn't upgrade packages by installing local packages (Related:RhBug:1138700)
does not install new pkgs when updating from local pkgs (RhBug:1134893)
Allow some commands to use stale metadata. (RhBug:909856)

Commands affected: autoerase, history, info, list, provides, repolist, search.
bash-completion: complete 'clean|groups|repolist' using help

Reported-by: Parag Nemade <pnemade@redhat.com>
Reference: https://github.com/rpm-software-management/dnf/pull/159#issuecomment-55066318
bash-completion: more faster completing install/remove

That's idea from Alberto Ruiz <aruizrui@redhat.com>
Make --refresh play nice with lazy commands.

rename demands.refresh_metadata to demands.freshest_metadata to better go with
demands.fresh_metadata.
Update user_faq.rst

'install' is wrong here as the action intended to run is 'upgrade', preceded by the 'enablerepo' option.
api: add dnf.cli.CliError.

Plugins need it.
refactor: move MakeCacheCommand out into its own file.
transifex update
New version: 0.6.2
build 0.6.2-1
spec: requires rpm-plugin-systemd-inhibit (RhBug:1109927)
group info handles environments (RhBug:1147523)
comps: Environment differentiates optional and mandatory groups