Add unit test for write-tree*, move out of repl.clj

Add arity overloads for write-tree* and read-tree*, so "git" does not have to be
passed explicitly to indicate the default git binary.
Add error-checking arity overload to read-commit

This supports transactions and throwing exceptions if the git subprocess exits
with error.