Initial version of rebaser.sh

The purpose of the rebaser is to be a slightly more advanced version of
an interactive, merge-preserving rebase. It supports not only rebasing
topic branches, keeping their merge structure intact, but also allows
for reordering commits, as well as integrating msysGit's 'merging
rebase' strategy.

To support all that, this introduces a couple of new "rebase commands"
in the form of temporary aliases called r.merge, r.start-merging-rebase
and r.cleanup. The edit scripts look very different from current 'rebase
-p' scripts, as a consequence. Example:

	exec git r.start-merging-rebase "2fb434d"
	exec git update-ref refs/rewritten/onto HEAD

	exec git reset --hard refs/rewritten/onto
	pick 780e6c6 Add a ZipInputStream
	exec git update-ref refs/rewritten/780e6c6 HEAD

	exec git reset --hard refs/rewritten/onto
	exec git r.merge refs/rewritten/780e6c6 -C 2fb434d # Merge branch 'zip-input-stream' into HEAD

	exec git r.cleanup  780e6c6

Subsequent commits will improve this further.

Since this developer designed the --preserve-merges support in
git-rebase in a very unfortunate, pretty short-sighted manner, it was
sadly not possible to provide this functionality as a patch series
improving git-rebase itself, but it is rather an add-on script that
circumvents parts of git-rebase.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
rebaser.sh: support fixup! and squash!

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
WIP: Use the rebaser in merging-rebase.sh

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
rebaser.sh: simplify marking rewritten commits

It is nicer to read

	exec git r.mark deadbeef

than

	exec git update-ref refs/rewritten/deadbeef HEAD

not to mention easier to write when modifying the edit script.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
rebaser.sh: make r.merge nicer to use

When modifying the edit script, it is quite convenient to be able to
split branches by inserting

	exec git r.mark my-new-branch
	exec git reset --hard refs/rewritten/onto

and later just adding the line

	exec git r.merge my-new-branch

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
rebaser.sh: provide hints as to branch names

It is quite convenient to know what branch is started by a

	exec git reset --hard refs/rewritten/onto

so let's try hard to find a branch name for each of them.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>