Fix diff stat for unmodified / untracked files

Since libgit2 allows you to generate a diff that includes
unmodified, untracked, and ignored files, we have to be careful
to skip over those when calculating diff stats.

This adds tests for this case and also a test for the base case
of simulating "git diff <sha>" that needs to use a merged diff
between the tree, the index, and the working directory.  That case
did not seem to be covered by the existing tests and it is an
interesting one because the expected results can come from running
Git on the command line.