Rewrite Reindex around projects

Opening and closing repositories and packs and constantly re-parsing
commits and trees thrashes even beefy machines, even when the
PatchListCache is hot. Instead, use a single RevWalk per Repository (i.e.
project), so we can reuse parsed trees when doing all the tree diffs.

Also take advantage of the fact that the set of changed paths without
rename detection matches that with rename detection (since we aren't
doing find-copies-harder), so skip rename detection.

Change-Id: I49b85cc93796332c63d8be8e0ce7b918c98a21f7
4 files changed