Fetch-rebase main branch

@charlierudolph I was too fast (and distracted) approving your complete removal of rebase. The reason why I left them in there originally, and why I still think they should be there, is that we should still rebase the main branch when updating it. We NEVER want to have merge commits on the main branch. Newer commits on my branch that haven't been pushed to the remote yet should always build on top of the existing commits in the remote, so that we can push them without merging, and other people can pull them without merging either. 

Since the main branch never gets rebased itself against another branch, this operation is safe here, compared to feature branches where it is not. 

I have added the missing feature specs for those cases.

What do you think?
:+1: I was planning on refactoring at some point to use a function just like this in a lot of the helper methods. Only other thing I had in mind was to `yield original_branch` so the block could use it.