Partial support for committing a new tree.

A very simple case is implemented right now: adding a single file at the root.
"Adding" means create a new packfile, with the same content as the previous
packfile (the "parent", as we have one packfile equals one commit equals one
root tree), except for the new/deleted/modified blobs, and propagating that
change to trees above the blobs.