magit-default-rev: always respect NO-TRIM argument

Previously this was only done when a commit could be found at point but
not when we had to use `magit-guess-branch'.
move magit-section pseudo getters into the struct section

When a `magit-section' struct represents a `diff' or `diffstat' section
more information has to be stored inside the struct than for other
section types.  Currently this is done by storing a list in the `info'
slot.

They right way to implement this would be to add additional slots to
the `magit-section' struct and just not use them for the other types,
that don't need them.

But because the `info' slot is used to uniquely identify specific
section this is not currently possible.  Doing so would require complex
refactoring elsewhere. I have already attempted to do so, it requires
changes all over the place.

Instead, for now, move the `diff` and `diffstat` specific pseudo slot
getters below the definition of the struct.
move definition of magit-hunk-item-target-line

Move the definition of function `magit-hunk-item-target-line' below
its only caller `magit-visit-file-item'.

Previously it was define in the "Diffs and Hunks" section, but since
that is about washing and this function has nothing to do with that
defining it there was not correct.
collect apply functions in a common section

Collect all concrete (type specific) implementations of
`magit-apply-item' in the same section "Acting">"Apply"; where
`magit-apply-item' and one of the type specific implementations,
`magit-apply-commit', were already defined.

Actually moved are `magit-apply-diff-item', `magit-apply-hunk-item',
`magit-apply-hunk-item*', and `magit-apply-hunk-item-reverse', which
were all previously defined in "Diffs and Hunks">"(apply)".
split "Diffs and Hunks" section in two

Split the toplevel section "Diffs and Hunks" into two new toplevel
sections.

* New "Diff Options" is concerned with the arguments passed to `git
  diff' to tune some details.  This is related to "washing" insofar as
  it effects the output being washed - but the act of toggling options
  does not change the fact that washing has to be able to deal with all
  of the options we provide.

* New "Diff Washing" only contains functionality directly related to
  the washing of diffs.  It fills the same role as the existing "Log
  Washing", just for diff output, not log output.  "Hunk" no longer
  appears in the section heading, because it is obvious that washing
  a diff involves washing hunks.
move definition of magit-wash-diff

Place the definition of `magit-wash-diff' in between the definitions of
`magit-wash-diffs' and `magit-wash-other-file'.  `magit-wash-diffs' is
the only caller of the other two functions.
merge three preliminary subsections of "Hunks and Diffs"

Merge the preliminary subsections "wash diffs", "wash diffstats", and
"wash top-section" into just one subsection "wash diffs".  Now that some
cleanup in this area has happened it is no longer helpful to keep them
separate.  Also the splitting wasn't really correct.

The functions in this subsection still need to be sanitized.  How
functionality is split between appears to somewhat arbitrary.
disband preliminary section "(hunk refinement)"

Move `magit-toggle-diff-refine-hunk' into "Diff Options", has it is
concerned with the highlevel aspect of the user turning this off or
on.  Do to the actual work it used the below functions.

Move `magit-diff-{,un}refine-hunk' into the "(wash hunks)" section.
give subsections of "Diff Washing" better names
Merge branch 'spread-Diffs'
add "Log Line Struct" subsection to toplevel "Log Washing"
add "Section Struct" subsection to toplevel "Sections"
add magit-section-content-beginning
remove unnecessary function magit-hunk-item-diff

The parent section of a `hunk' is always a `diff'.  Function
`magit-hunk-item-diff' is therefor unnecessary.  All it did was assert
that this is indeed the case.  By removing this assert we only risk that
a user reports a harder to diagnose error message, but if that ever
happens it should be doable.  Besides I cannot remember that there ever
was a report Magit complained "Huh?  Parent of hunk not a diff".
magit-wash-raw-diff: basic support for all diff states

If a state is encountered that is even more unknown than
`git diff's "unknown" (X) state then raise an error.
magit-wash-diffstat: remove comment and commented code

The comment was added in commit 293a7804b1b0b15614c0e4c826f9e70059e872ff
the commented code consists of the "removed" code and, so it seems, some
leftover experimental code.

The comment would have made a fairly good commit message, but as a
comment it does not fly with me.  Leaving the old code in the file but
comment it...
remove unused magit-diffstat-item-status
magit-wash-diff-section: replace a use of let* with let

In `magit-wash-diff-section' replace one unnecessary use of `let*' with
`let'.  This avoids confusion in the future about why `let*' was used in
the first place.  To keep the diff small replace "*" with a space,
instead of removing it.  This avoids having to reindent the whole thing,
resulting in a rather larger diff, for no good reason.
merge magit-wash-diff-or-other-file into its only caller

Merge `magit-wash-diff-or-other-file' into its only caller
`magit-wash-diffs', both of which are very simple - no need
to split that any further.
magit-wash-raw-diff: use `1+'