Avoid reading notes to map hg heads to git commits
Read notes with ls and cat-blob commands
Abort when git has core.ignorecase set to true because it triggers case folding in fast-import
Add update notes for the case-folding problem
Cache parsed changeset data instead of non-parsed notes
Allow to get mercurial changesets with parents
Fix a case of bad handling of manifest revdiff data

This corrupted a clone of the mercurial source repository. Mozilla-central
and related Mozilla repositories are not affected.
Fix bad handling of manifest branch history

In some cases, a downloaded bundle may contain manifests that are already
known. This could lead to the manifest branch being reset to an earlier
point, effectively removing more recent manifests.

The manifest branch is however reflogged, so until the reflog expires and
git gc removes that data, everything still works fine.
Change the git() function to return an enumerator
Use git cat-file --batch
Move some functions to a separate "git" module
Use subprocess.PIPE for git cat-file --batch
Remove keepends and stdin arguments to git() as they are now unused
Refactor interaction with git
Add ls-tree support to the Git class and use it
Don't automagically prepend refs/remote-hg in for_each_ref
Fix sha1path for depth=0
Use cat-file --batch to read notes
Use update-ref --stdin in hgdebug
Add a method for diff-tree