Enhancement: Improve cache handling for `restic check`

For safety reasons, restic does not use a local metadata cache for the `restic
check` command, so that data is loaded from the repository and restic can check
it's in good condition. When the cache is disabled, restic will fetch each tiny
blob needed for checking the integrity using a separate backend request. For
non-local backends, that will take a long time, and depending on the backend
(e.g. B2) may also be much more expensive.

This PR adds a few commits which will change the behavior as follows:

 * When `restic check` is called without any additional parameters, it will
   build a new cache in a temporary directory, which is removed at the end of
   the check. This way, we'll get readahead for metadata files (so restic will
   fetch the whole file when the first blob from the file is requested), but
   all data is freshly fetched from the storage backend. This is the default
   behavior and will work for almost all users.

 * When `restic check` is called with `--with-cache`, the default on-disc cache
   is used. This behavior hasn't changed since the cache was introduced.

 * When `--no-cache` is specified, restic falls back to the old behavior, and
   read all tiny blobs in separate requests.

https://github.com/restic/restic/issues/1665
https://github.com/restic/restic/issues/1694
https://github.com/restic/restic/pull/1696
