MergeState: record the name of the branch to hold the final results.

Explicitly record the name of the branch to which the final results of
the incremental merge should be written.  It defaults to the name of
the merge.
Extract a function get_boundaries().
Change the signature of MergeState.initialize().

Make the caller determine the boundary and pass it in.
Add a new "merge" subcommand.

It sets up an incremental merge to do something similar to "git merge".
Add a new "rebase" subcommand.

It sets up an incremental merge to do something similar to "git
rebase", at least for the simple well-formed rebase scenarios where
imerge makes sense.
Merge branch 'simple-starts'

Make it more convenient to start "git imerge" in a way familiar from
"git merge" and "git rebase":

* git imerge merge <branch>

  Start up an incremental merge with the goal of merging <branch> into
  HEAD.

* git imerge rebase <branch>

  Start up an incremental merge with the goal of rebasing HEAD onto
  <branch>.

These new subcommands set up the defaults, goal, etc. appropriately so
that after starting the user only has to do

    while not done:
        fix conflict
        git add <file>...
        git imerge continue

    git imerge finish

to get the same results as the corresponding git commands.

(I've used "rebase" several times already and it is very convenient.
"merge" is so far only lightly tested.)

A "rebase-with-history" command might also be added, but it can be
done using "rebase" and setting the goal explicitly to
"rebase-with-history".