Add hesokuri.transact namespace

This will let us keep track of errors when writing and reading to a Git
repository.
Add transact/with-closeables helper
Deliberately define behavior for using a finished transaction

A finished, or nil transaction, is a no-op transaction. It does not accumulate
errors, but throws them. open and close do something reasonable that assume the
coder knows what he is doing.
Reimplement Git functions in hesokuri.repl using transact utility
Make functions in hesokuri.git ns throw Exceptions on error

Up until now they have been returning complicated error codes (e.g. read-hash or
returning values that overlapped with valid behavior (e.g. read-tree-entry and
nil). Now that hesokuri.transact can help us close streams backing lazy
sequences, we don't need to be more careful with throwing Exceptions.
Fix race condition in Git test case

spit closes the stream, so it is possibly that (realized? finish) is true.
Remove functionality from hesokuri.transact

This functionality probably will never be needed, and it made the purpose of the
namespace unclear.