use selected window to edit rebase sequence

Move the call to `magit-server-visit-args' from
`magit-run-git-sequencer' to `magit-rebase-async'; other
callers of the former don't need to set the visit arguments.

Call `magit-server-visit-args' without providing any values for the
arguments OTHER-WINDOW and ARGS.  Previously we attempted to provide
a value for ARGS, but ended up making OTHER-WINDOW non-nil (which we
don't want) and omitting ARGS (which didn't matter because that value
wasn't used anyway).
use selected window to edit note

Since we do the same for commit messages.  (It might
not look like we so in that case, but we really do).
remove last section gap

Each section, except for the root section, begins with text which
directly belongs to it.  For sections which have children that is the
heading.  Then come the child sections and almost all text that follows
is part of these child sections.  The only exception is that after all
children there may be a single empty line, which serves to separate the
expanded section from its next sibling.  When the section is collapsed
that newline is also hidden.

This is the "newline after children" exception.  Until now there was one
other section: after the headers in the status buffer there was an empty
line separating from the following section which was not part of the
sections that wrap the headers.  It has been like this for a long time
and the reason I did not change it was that I felt that there should be
a separator between the headers and the first non-header section even
when the headers are collapsed (meaning that only the "Head" header is
showing).  I haven't really changed my mind on that but feel that the
elimination of this special case is much more important.  (We could
emulate the old look by adding a separator section after the headers,
which consisted of only a newline).
magit-section-forward: handle "\n after children" special case

There often is a newline after all children which does not belong to
the last child but to its parent.  Iff the parent section is expanded
this newline serves as separator.

When point was on that newline `magit-section-forward' used to go to
the first child instead of the next sibling.
remove unnecessary option magit-success-executable

Instead just use "true".  Git uses that too so we can
safely assume it is available, even on a crappy OS.
make use of with-editor-server-window-alist

Add entries for commit message and rebase sequence buffers to the new
variable `with-editor-server-window-alist'.  Previously we arranged
for the buffer-local value of `server-window' to be set and then be
respected by `with-editor' every time a Git command that would create
such a buffer was called.  That was an ugly hack, because we used a
global variable to "pass information" to the code that would later
create and display the buffer.

Remove that hack consisting of the variable `magit-server-visit-args'
and the functions `magit-server-visit-args' and `magit-server-visit'.

`magit-server-visit' was also used to fiddle with window configuration
when showing the changes that are being committed; and to save the
commit arguments, to help `magit-diff-while-committing' later show the
correct "other meaningful diff".  Turns out this function doesn't need
our help to do so. And the window configuration tricks are now performed
in the new `magit-commit-switch-to-buffer'.
magit-refresh-buffer: wrestle with window-point again

There have been various attempts at this but they only worked in
some cases and tended to make matters worse in more cases.

The problem we have to solve is that when a non-status buffer is
refreshed and the respective status buffer exists, then that has to
be refreshed too; but unless we take extra precautions `point' would
later (when we actually display the buffer) be reset to the value of
`window-point'.  Now we update `window-point' during refresh for all
windows which do or used to display the buffer being refreshed.
magit-popup-insert-section: ignore maxcols during sequence

This is a kludge on top of another kludge, that's
how these things go.  Needs to be fixed, obviously.
magit-rebase-{edit,reword}-commit: new commands
magit-{sequencer,cherry-pick,revert}-in-progress-p: bugfix

Previously these functions assumed that a cherry-pick/revert is in
progress if ".git/{CHERRY_PICK_HEAD,REVERT_HEAD}" exists.  That does
not have to be the case.  However ".git/sequencer{,/todo} do exist
in both cases, and the content of ".git/sequencer/todo" tells us
which of the two it is.
magit-patch-id: new function
magit-with-temp-index: allow reading into the temporary index
magit-commit-{tree,worktree}: new functions
magit-rev-equal: new function
magit-am-apply-patches: fix patch order
take sequence sections to the next level
use same specialized sentinel for all sequence commands

Remove `magit-rebase-async', instead use `magit-run-git-sequencer'
for all the other sequence commands too.  This function now uses
`magit-sequencer-process-sentinel' which was previously named
`magit-rebase-process-sentinel' and is now adjusted to find
commits in non-rebase sequence sections too.
add new library magit-sequence.el