don't store face section in a diffstat struct a third time

It is a common issue that the type of a section is stored in the section
struct twice, in slot TITLE and TYPE.  Sometimes one is a string and the
other a symbol, but there is little consistency which of the two is what.
And then these slots are also used as magic switches for only slightly
related functionality.  That's all pretty bad in itself, but...

For diffstat sections this was taken a step further.  The symbol
`diffstat' was additionally also stored as the car of the INFO slot.
And there even was a dedicated function to retrieve that information,
but it was never used.  Remove that function and don't cons `diffstat'
onto INFO, its "not necessary".
magit-wash-diffstat{,s}: use a symbol as the section "title"

The TITLE slot of section structs is not actually the "title".  It's
just another slot like TYPE used to store what kind of section it is,
except when it isn't (e.g. because it is nil, which appears to mean
"don't highlight the section".  So this is a kludge and doesn't have
to (actually cannot possibly) make sense.
add magit-jump-to-diffstats, replacing magit-goto-diffstats
make variable magit-show-diffstat an option

`magit-show-diffstat' used to be a regular variable,
it now is a customizable option.
remove function magit-wash-other-file

Remove function `magit-wash-other-file' as it did not actually ever
get called.  It was used in `magit-wash-diffs', if `magit-wash-diff'
returned nil.  The latter could actually return nil but in practice
it never did (which means that this function also have to be cleaned
up).
magit-wash-diff-section: jump over initial whitespace
merge magit-diffstats-ediff into magit-ediff

What we usually do when some command has to behave differently depending
on the type of the section at point, is to use `magit-section-action'.
Here we don't do that because it only has to behave differently on one
specific type, but conceptually we are doing the same.

Before this commit something completely different was done, resulting in
an unnecessary command `magit-diffstats-ediff', and an unnecessary keymap
`magit-diffstat-keymap' which was used as the keymap of a small portion
of the buffer (the diffstat).  We don't do that anywhere else, so stop
doing it here too.
remove function magit-diffstat-item-file

Remove function `magit-diffstat-item-file' because it is no longer
necessary.  We already deal with `git CMD --stat' possibly printing
abbreviated filenames elsewhere.
magit-wash-diffstat: don't store incomplete information

In `magit-wash-diffstat' do not store the possibly incomplete
filename (as well as some information related to it which is never
used), because it will be set to the complete information later on.
magit-wash-diffstat: remove insufficient comment

Remove the comment "Don't decode pseudo filename." because it just
states what we (don't) do not why, and the why is to long for a comment
and also likely not what the initial reason was:

We not only don't decode the filename because it could be abbreviated
and that could cause problems, but because it is actually a good thing
to display the filename "as git would format it" somewhere.  That name
is only used for display, so that won't cause any problems when acting
on diffstat sections.
magit-wash-diffstat: push section onto magit-diffstat-cached-sections

In `magit-wash-diffstat' use `push' to push the current section onto
`magit-diffstat-cached-sections'.  Previously `add-to-list' was used,
which is semantically wrong; we want to push every diffstat section.
magit-wash-diffstat: cleanup

In `magit-wash-diffstat' remove... noise,
including the unused optional GUESS argument.
magit-wash-diffstats: cleanup

Make `magit-wash-diffstats' half as long by not doing unnecessary stuff.
Because this includes not deleting and the reinserting a newline, and
`magit-wash-diff-section' is a bit stupid
magit-wash-diffstat{,s}: switch textual position
magit-wash-diffstat: colorize like git would
make the INFO slot of the diffstat section struct an atom

The INFO slot of diffstat section struct previously was a list whose car
was the filename and whose cdr was a bunch of irrelevant noise.  Remove
the noise, store just the filename, as an atom.
magit-diff-item-{kind,file,file2,range}: use nth instead of c{*}r
Merge branch 'pr/wash-diff-wash'