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.
Then it looks like it actually pushed, but it didn't do it. This might be more confusing than helpful.