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.
When I see `Everything up to date`, I am thinking "Oh, I know that message from Git. It mush have run "git push" under the hood. That's misleading. I'd rather have a separate notification here that makes it abundantly clear, even for the uninitiated, that nothing was even attempted to be pushed.