Skip unnecessary pushes

@charlierudolph this implements #66. 

This also refactors `create_commits` in order to allow the same commit to exist locally and remote in feature specs. That wasn't possible before, and is required now.
Because (1) that has side effects on the coworker repo (in case we ever use that for testing collaboration), and (2) that leaves the git client not knowing about this remote commit.