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.
"Very weird" is a strong term for the only block statement in Ruby that is somehow, against all other rules, not indented, and Ruby being the only language which indents select/case statements this way altogether. But fine, I have fixed it. I think all Ruby style guides are broken in this area :smile: