refactor: put Repo.load() at the correct place in the class.

fix documentation of metadata_expire_in().
refactor: repo: move checking of existing metadata from _try_cache() to load().

to keep the logic together and be sure that no matter what, if we have loaded
metadata the try_cache won't have a chance to mess it up.
dnf.util.touch() accepts 'no_create' parameter now.
'reviving' repositories using checksum information from metalink.

If a repository is expired locally and has a remote metalink we can check it
whether there even was an update. If not, just consider it fresh again.

Test included, very tricky (ugly).