Patch Set 6: I would prefer that you didn't submit this

Patch set 6 is rebased and (mostly) works. Simple testing shows shallow clones and deepen requests are functional.

The shallow clone is a bit wrong right now; its over-transmitting a number of commits that should not have been set. 331 commits for a shallow clone of C Git are sent, but not expected, and show up as dangling commits on the client side.