Introduce git_revert to revert a single commit
clean up state metadata more consistently
Merge pull request #1977 from ethomson/revert

Revert support for a single commit