Add --track option to branching
remove magit-run, add magit-run-{stgit,topgit}

Remove `magit-run'.  It isn't used by any known external library.

Within Magit it was used by `magit-stgit.el' and `magit-topgit.el'.
Add `magit-run-stgit' and `magit-run-topgit' as replacements.  Note
that the later has slightly different semantics than the former and
`magit-run-git'.  Remove the unnecessary explicit `t' return values
of some callers `magit-run*' and by extension `magit-run-top' already
return `t' or raise an error.
magit-stgit.el: remove colons at end of section headings

Of course keep the required colon after "Commentary" and "Code".
Also rename section "Customizables" to "Options".
magit.el: rearrange "Git Processes" section

Move the "api" functions (`magit-run-git{-*} to the top, even before
`magit-run*'.  Also change the order within this group of functions.

Move some boring functions that were previously defined first to the
very bottom instead.
magit-run*: use command's basename as process name

Previously the full path to the executable was used (provided
the command was actually passed to `magit-run*' as full path).
always use ".git/magit-bisect-run" as the bisect script

Previously a temporary file was used and the variable
`magit--bisect-tmp-file' was necessary to remember its location.
define magit--bisect-last-pos as a permanent local variable
rewrite func `magit-ref-get-label-color'
add new face `magit-log-head-label-head'
enable to display HEAD label in magit-log
magit-insert-staged-changes: do more work here

Do more work inside `magit-insert-staged-changes' instead of requiring
the callers (*currently* only `magit-refresh-status') to pass in some
values.
magit-insert-status-line: declare indentation rules
add magit-insert-status-head-line
replace global magit-process-client-buffer with local variable

Instead of setting `magit-process-client-buffer' globally pass the
buffer that was current when `magit-run*' was called to the functions
that need to know about its value.  These are the process sentinels.

Because process sentinels take exactly two arguments we create a partial
application of `magit-process-sentinel' (and `magit--bisect-run-sentinel')
and use the returned function as actual sentinel.

Also limit the use of the global variable `magit-process-buffer-name',
rename some of `magit-run*'s internal variables and change were these
variables are set.
magit-display-buffer: also handle the timed display

This helps relieving the burden on the overloaded `magit-run*'.
remove unused magit-run-git-async-with-input

No internal or external libraries use this function.  The old commit
workflow used it but even if we restore parts of that we should not
restore this function (we could just use `magit-run-git*' directly).
I would like to avoid advertizing this usage of `magit-run*' (which
this function is just a wrapper around).
magit-{cherry-pick,revert}-commit use magit-run-git

instead of `magit-run-git*'.
define magit-git-{string,lines} more directly

Instead of returning the result of passing the value of
`magit-git-output' to `magit-trim-line'/`magit-split-lines' use
`call-process' and extract the first line / the lines directly.

Add doc-strings because we need to explain how empty lines are handled.

Change how `magit-git-lines' deals with empty lines.  Previously the
return value could contain empty lines but if the first line was such a
line then that empty string was removed, but no other.  Now all empty
lines are ignored.
use magit-git-insert where appropriate

Due to that and the changes in the last commit `magit-git-output'
becomes unused and is removed.
remove magit-cmd-output, do the work insided magit-cmd-insert

`magit-cmd-insert' was the only remaining caller of `magit-cmd-output`.