Add a thin git wrapper

Not yet totally complete, but figured I'd open up this PR. Eventually this will be separated from roots, but including it in the project for now. Tests are passing, but I'd like a bit more coverage before this would get merged, and to implement it everywhere else that uses git in roots.