Add --preserve-merges to all the rebase calls
Explicitly check that a branch is actually a descendent of master before rebasing it during sync.  --preserve-merges seems to never fast-forward an ancestor branch, so don't rebase it and explicitly fast-forward it after sync
Merge branch 'PreserveMerges'