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.
Thinking about this more, in (2) it actually shouldn't know about the remote commit. I have restored your version.