Add caching for git projects.

 file lists are cached per project. cache entries are invalidated when HEAD changes.