Fix "finish" subcommand when invoked without an explicit --name.

This functionality was broken by the previous commit.
MergeRecord.save.clear_ref(): Fix invocation of "git update-ref".
Block.auto_outline(): Don't do redundant work for 1x1 blocks.

If a block contains only a single micromerge, then there is no reason
to do the "outlining" two ways and compare the results for
consistency.
Fill in diagram from left-to-right.

Although there might be a more efficient algorithm, it is probably
easier for the user if we jump around a little as possible.
Therefore, fill in the diagram from left to right rather than based on
the areas of the blocker blocks.
Simplify and improve documentation.

In particular, goals were described redundantly.  Merge the two
descriptions.
Add a method Block.get_merge_state().

Also rename SubBlock._block to _merge_state, 'cause that's what it is.
Add a new goal, "full".

Add a new "full" goal, which forces every single micromerge to be done
explicitly and preserves the complete merge diagram including all
micromerges.
Merge branch 'simplify-to-full'

Add a new goal, "full".
Auto-commit staged changes in commands 'continue' and 'record'.

If there are staged changes when the user runs 'continue' or 'record',
then auto-commit them before proceeding.  This should make the
workflow significantly smoother and more consistent with "git rebase
--interactive".  (In fact, some of the logic included in this change
was derived from the implementation of "git rebase --interactive".)

For simplicity and consistency with "git rebase', also tighten up the
condition for incorporating a user merge: the scratch reference not
only must exist but it must be checked out.
When simplifying to rebase, relax the ff requirement.

When simplifying an incremental merge of BRANCH onto MASTER into a
rebase, a simplification with --branch=BRANCH would fail because
updating BRANCH to the result of the rebase is not a fast-forward
update.

But when doing a rebase, the user typically *wants* to discard the old
versions of the commits on BRANCH (just like with "git rebase").  So
allow such a simplification even if the reference update is not a
fast-forward, *provided* that the apex of the incremental merge (i.e.,
before the simplification) is a descendant of the commit pointed to by
the old value of the reference being pointed at the result.
Prefer single to double quotes for simple strings.

Being consistent makes searching easier.