Make commit tree explicit

Now the Repository.commit function gets passed an explicit tree id and
key instead of calling Repository.snapshot by itself.