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.
The only sane way to separate the (incorrectly in my opinion) indented nested `when` statements inside the containing `case` block is to separate them visually by putting them on their own lines. That's what I do here. `else` is just another such statement, and formatted consistently with the other `when` statements here.