keep git submodules from getting stale

Summary:
Previously we were never running `git fetch` in repos that had been
downloaded as submodules. So eventually when the main repo moved forward, we
would get "not a tree" errors in the submodule. Unify the `checkout_tree` logic
in the git plugin, so that it always runs a fetch if it needs to.

Fixes https://github.com/buildinspace/peru/issues/21.

Test Plan: Add a test that fails before and passes now.

Reviewers: sean

Differential Revision: https://phabricator.buildinspace.com/D43
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
delete an unused flag

Summary:
I forgot to remove `--delete` when we changed the syntax for
`override`.

Reviewers: sean

Differential Revision: https://phabricator.buildinspace.com/D47
update comments in compat.py

Summary:
If we ever remove support for 3.2, we'll probably want to delete
`compat.indent`.

Reviewers: sean

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