Re-use CAppUtils::RebaseAfterFetch() in Sync dialog

Signed-off-by: Yue Lin Ho <b8732003@student.nsysu.edu.tw>
Fixed issue #874: Add --rebase option to pull dialog

"--rebase" option is introduced by 25bd4c961830590ffdb51202e935fd168b7b2484,
but further work is needed.
So, the "Launch Rebase After Fetch" checkbox is hidden from Pull dialog.

For the conflict reason,
the Rebase dialog uses cherry pick(instead of "--rebase" option)
to perform rebase function.
And CLI option "--rebase" should not be used. (never and ever)

Therefor, if "Launch Rebase After Fetch" checkbox is checked in Pull dialog,
then "git.exe pull --rebase" is adapted to "Fetch & Rebase".

Also support branch.<branch_name>.rebase
Once the branch.<branch_name>.rebase = true,
"Launch Rebase After Fetch" checkbox will be checked and disabled.

Other reference:
Please see branch.autosetuprebase
in https://www.kernel.org/pub/software/scm/git/docs/git-config.html

Signed-off-by: Yue Lin Ho <b8732003@student.nsysu.edu.tw>
Refactored: split CAppUtils::Merge()

Signed-off-by: Yue Lin Ho <b8732003@student.nsysu.edu.tw>
Fixed issue 1608 *partially*(Merge): Add "Retry" button where applicable

Memo:

 Tested:
 * Switch 1217
 * Merge 3039
 * Fetch 2414
 * Reset 1423

 Un-test:
 * Pull 2270
 * Push? 2584
 * Export? 1044
 * BisectStart? 3321

我看到了一個 pattern:
1. Data/parameter data collection dialog
2. prepare git-cli/libgit2 for specific cmd
3. prepare post cmd, including retry
4. Run Progress/cmd

或許可以用 OO, 把一系列的命令串起來
然後設計一個介面讓使用者可以自訂一系列命令並執行
同時解掉 issue #246 ?

Signed-off-by: Yue Lin Ho <b8732003@student.nsysu.edu.tw>