"GitHub Mac"-like behaviour for commit button 

Added a "sync: toggle next to commit button that:
* automatically stages ALL files (unmerged, merged, untracked) if none are staged
* pull --rebase after commit
* push after commit

This is as per wishlist #199

I'm really bundling potentially two separate features here, maybe it would be better to have a setting for the "idiot mode - just add everything to index if nothing selected" and have the sync toggle control only the push/pull aspect.

Also, there is potentially a lot of situations this doesn't cover, such as syncing an untracked branch, and also we assume git push to do a sensible thing rather than explicitly specifying the branch to push to.

And I'm thinking push/pull should display progress and not block UI, but couldn't figure out how to automate the RemoteActionDialogs.

(I'm not a python guy so I'm sure the code makes you cringe, please criticize and help me get better)