Previously, the fncache code assumed that .i and .d revlog
files were being used.
The file storage interface has a files() API to declare the
paths of underlying files that are backing storage. It will
always return the .i file. And depending on whether the revlog
is inline, it will return the .d.
This change will make rebuilding the fncache a bit slower since
we now have to open revlogs. But this is the only reasonable
way to support multiple storage backends with fncache at this
juncture. This code is only called from debug* commands, so the
perf hit shouldn't matter.