collect all status section inserters in one place

All of the sections created by these inserters are used in the "status"
buffer.  They can also be used in other Magit buffers but that doesn't
change the fact they are "status" sections.

Some of these inserters were defined as part of the "Status Mode"
toplevel section, while others where defined next to the lowlevel
functions they make use of.  There are two ways to make that
consistent... this commit implements on of them.

Because these inserters can also be used by other Magit modes besides
`magit-status-mode' create a new toplevel section "Status Sections"
instead of placing inside a subsection of "Status Mode".  Actually this
is done by promoting the existing subsection "Status Mode">"(sections)"
to a topsection; so the definitions that were already located there do
not have to be moved.

Because after moving `magit-insert-untracked-files' the toplevel section
"Untracked Files" only contains one function `magit-wash-untracked-files'
move that along with the former (which happens to be its only caller).

The definitions of the inserters are in the same order as the sections
are inserted in the "status" buffer.  Unfortunately that means that the
more noisy ones come first.  But that's just because nobody has bothered
cleaning them up yet.

Actually that is not quiet true.  The "line" sections are defined after
the "real" (multi-line and collapsible) sections.  But that is no
problem because the section is split into respective subsections "Line
Sections" and "Real Sections".
split the section "Stage and Unstage" into two

Split the section "Stage and Unstage" (a subsection of "Acting") into
two subsections "Stage" and "Unstage".  I admit this is completely
unnecessary but I have to satisfy my ocd.   :-)
add magit-add-change-log-entry{ replacing -no-option}

Add command `magit-add-change-log-entry' replacing the less flexible
`magit-add-change-log-entry-no-option'.  This is done by duplicating
the (trivial) prefix argument handling from `add-log-change-log-entry'.
magit-add-change-log-entry-other-window use magit...entry

Define `magit-add-change-log-entry-other-window' using
`magit-add-change-log-entry' instead of interactively calling
`add-change-log-entry-other-window'.

This makes the use of the macro `magit-visiting-file-item' unnecessary.
We will take advantage of that in the next commit.
magit-change-what-branch-tracks: lose unnecessary test

Do not test for the empty string being returned by `magit-read-rev'.
If the user makes no selection that function does no longer return
the empty string but raises an error.
magit-change-what-branch-tracks: lose comments

Loose the comments inside `magit-change-what-branch-tracks'.
They would have served better as the commit message.
magit-change-what-branch-tracks: simplify by using fewer variables
magit-wash-branch-line: rename internal variable

In `magit-wash-branch-line' rename internal variable `current-string'
to `marker'.
magit-wash-branch-line: add internal variable branch-face

In `magit-wash-branch-line' add a new internal variable `branch-face'.
This allows checking only once whether the current line is about the
checked out branch.
magit-wash-branch-line: mark checked out branch with "*"

In the branch manager mark the current branch with "*", just like Git
does.  Previously "#" was used.
magit-wash-branch-line: use insert instead of insert-before-markers

When this function is called there exist no markers that need to be
moved forward.
magit-wash-branch-line: use name variable when appropriate
magit-wash-branch-line: cleanup by using insert more than once

Previously there was one call to `insert`.  Unlike `concat' that does
not treat `nil' like an empty string leading to a lot of unnecessary
THEN clauses that consisted of the explicit empty string, which blew
up the code quiet a bit.  It also made it quiet unreadable making
comments necessary; now we don't need them anymore.
magit-wash-branch-line: shorten names of internal variables
magit-wash-branch-line: loose an unnecessary comment
deal with strange location of emacsclient on OS X

On OS X applications are often installed in strange "executable
directories".  The Finder presents these directories as actual
applications to the user who might be blissfully unaware that
clicking on it actually executes a binary inside the directory.

So they have been happily clicking on a flashy image to start
Emacs and we come along requiring emacsclient being on $PATH.

But it gets worse.  The emacsclient executable might not even be
located in the same subdirectory of the application directory:

  /Applications/Emacs.app/Contents/MacOS/emacs
  /Applications/Emacs.app/Contents/MacOS/bin/emacsclient

So we have to look for the emacsclient here too:

  (expand-file-name "bin" invocation-directory)

Also see:

  https://github.com/magit/magit/issues/862#issuecomment-24784266
magit-with-emacsclient: wait longer before resetting server-window

We have to reset the default value of `server-window' using a timer
(see comment close to this change).  Previously we waited 0.2 seconds
before doing so, but it seems that sometimes isn't enough.  Wait a full
second instead.
magit-blame-{prev,next}-chunk: use {previous,next}-single-property-change

Define `magit-blame-{prev,next}-chunk' using
`{previous,next}-single-property-change'.

This replaces a lot of broken code with the use of functions already
provided by Emacs.  The old code was broken in at least these ways:

* going backward always jumped to the beginning of the buffer (#937)
* going forward sometimes just moved a character forward
Merge branch 'pr/blame-moving'
magit-run-git-gui-blame: suppress error when not visiting a file

Suggested-By: Pieter Praet <pieter@praet.org>