refactor: do not rely on CliCache (dnf.conf.Cache previously) outside of Cli.

conf.cachedir should be sufficient for all our current purposes. Let Cli wrap
around that as it needs.

doc: api: document Config.cachedir
setup deprecation warnings.

call dnf.logging.depr() to flag a deprecated code path.

the implementation tries to obey the following:

- dnf users never see the warnings (achieved explicitly by never using
  deprecated code in DNF CLI)
- warnings are logged to dnf.log (achieved by using logging.captureWarnings)
- API clients see the warnings in stderr depending whether the WARNING logging
  level is enabled for stderr and always in the logfile (achieved by sharing the
  same handles with the 'dnf' logger)
- DNF does not disturb whatever the API clients/Python defaults have set for
  warning categories (achieved by supplying and setting up our own deprecation
  warning class)
refactor: initializing a Repo.

Since a repo always needs a cachedir, make it an argument of the constructor.

api: doc: Repo.__init__().
rename: queries.Query -> query.Query. queries.Subject -> subject.Subject.

The 'queries' name was confusing as there's only one Query class in there
and Subject is not a Query. This technically constitutes an apichange: the
old module was referenced in the documentation. That's why the dnf.queries
stays for now as a deprecated module.
Add the "determining the fastest mirror" progress code.

requires librepo >= 1.4.0
No fastestmirror "status" message if detection didn't run.
doc: api: document Query.
removed PycompDict