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?
I thought it improves readability to separate major parts of scenarios (new "when" blocks). I'll do this in a separate PR, but I wanted to get your take on this first.