ignore "corrupted" files, use default value

since we use a file as a cache, and the format of that cache might
change from version to version, we want to recover gracefully if the
file cannot be read because it's been written by a different version.
ignore cache files written by old versions

if the cache file was written by an old version, either the file will
fail to parse (fixed by the previous commit) or the key will not be
found because the version will be wrong.
fix "resource busy" introduced by previous commit

Due to laziness, we could determine that the cache file was no good
without reading all of it. This caused us to open the file while it was
still semi-closed, leading to a mysterious "resource busy" error.
Merge branch 'issue-88', closes #88