Hack around lack of support for tabs, for now.
Revamp the way we delimit actions in UndoStack.

Now we group everything that happens "outside" a fn into a single action, and
everything that happens "inside" a fn into a single action. Previously we did
only the latter and edits that came in outside a fn dangled until the next fn
was completed.

This plays more nicely with situations where a fn uses the minibuffer to get
information and then acts on that information by editing the buffer.

I may still want to add explicit transactions, but only to enable finer or
coarser grained grouping of edits. We'll always do something reasonable, and a
programmer can expend extra effort to go from reasonable to Just Right (tm)
when the situation merits.
Nix debug logging.