Add git/invoke-streams to allow sending stdin to git

This also allows running git asynchronously.
Move with-temp-repo testing utility to hesokuri.testing.temp

This is to prepare it for use in unit tests for hesokuri.repo. Also, add a
feature to store the "--git-dir" flag in a variable, since this is needed to
invoke git on the repo.
Add hesokuri.repo/invoke-git

invoke-git will be the new way to invoke git on initialized repos. This does not
actually change existing functions to use it, which will come in a later commit.
Includes a test case for invoke-git and fast-forward that actually creates a
real Git repository.
Add tests for many methods in hesokuri.repo

Many of these methods already had unit tests, but the tests did not run against
actual Git repositories.
Migrate code in hesokuri.repo to use hesokuri.git wrappers

rather than the hesokuri.util "sh" wrapper. Delete the old sh wrapper.
Shell out to git in order to get the currently-checked-out branch

This fixes a bug when a brand new repo would be considered to have a checked-out
branch.
Fix hesokuri.repo/init behavior when initializing a bare repo

There was a bug where it would initialize a non-bare repo with a working
directory equal to the git directory of the bare repo. This was a problem both
when the bare repo was already in that location, and when there was not repo
there but the :bare property was set to true.

Also add a test case for proper creation of non-bare repos in init.