WIP add full git support

Hey, wanted to open up this PR as a place to discuss the correct way to add git to this.

I spiked out an initial version that seems to work, but its not fully in memory and writes files temporarily to a temp directory.
Shouldn't the git command always be `git`?  We can make it an option if you want though, I don't mind.