Compute new commits using SHA-1s rather than GitObjects.

Previously, GitObjects were created for *all* references in the
repository, which was quite expensive (mostly because of the git
invocation to determine the short name of the object).  Now we only
create GitObjects for new commits, which should be a much more
manageable number.