implement self healing cache reader (fixes #350)

in case we cannot read the cache file, return an empty one. Since
this is only a cache, it does not really matter if the file is broken or
not. So only emit a warning.