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.
I think `pushes` is better than `operations`. There may be more operations we can optimize.