implement Cache.read_file()

Summary:
As we move towards allowing remote repos to define their own
`peru.yaml`, we'll need to be able to read file contents out of trees
that we have in cache, without unpacking the whole tree. This diff
creates that method.

I notice that the `_git` method in Cache is getting a little crufty. But
my ideal fix for that is replacing the whole thing with libgit2, so I'm
not worrying about it too much for now.

Test Plan: New unit test.

Reviewers: sean

Differential Revision: https://phabricator.buildinspace.com/D46