magit-section-show: explicitly re-highlight on wash

When expanding the section involves inserting and washing it, then
explicitly re-highlight it.  Previously we pretended that there wasn't
a current section before we started washing and thereby triggered the
highlighting but that actually caused the highlighting to get stuck
because the old overlay never got disposed.
magit-insert-branch: do not bind magit-insert-section--parent

Do not bind `magit-insert-section--parent' in the lambda which is
created by `magit-insert-branch' and later used when inserting and
washing the section body when it gets expanded.  This is already
being taken care of in `magit-section-show' which calls the lambda.
magit-insert-branch: set magit-section property for post-children text

In the lambda which is created by `magit-insert-branch' and later used
when inserting and washing the section body when it gets expanded, set
the `magit-section' property of the post-children separator newline.

Setting this property is normally done inside `magit-insert-section',
here we have to do it explicitly because we modify an existing section.
highlight all headings using overlays

Unlike other sections hunks, and parents of such sections, are not
highlighted using a single overlay.  Instead all of their parts where
highlighted using text properties.  Until now that included section
headings, which wasn't a problem because all these headings where
uniform, they used a single face for all text.

In subsequent commits we are going to display diffs in more places,
making additional section types parents of hunks.  Some of these
sections have more colorful headings; overlays have to be used to
highlight these headings or their text properties would be lost due to
highlighting.
evaporate section highlighting overlays

We already did that for other overlays.  We now also do this for
highlighting overlays, which is necessary because refreshing the
buffer does not first delete these overlays.
add custom group magit-section
add hooks magit-section-{,un}highlight

Instead of hard-coding the handling of the hunk special case in
`magit-section-highlight' and `magit-section-unhighlight' add the hooks
`magit-section-highlight-hook' and `magit-section-unhighlight-hook' and
call them directly from `magit-section-update-highlight'.

Add the hook functions `magit-diff-highlight' and
`magit-diff-unhighlight' and add them to the respective hook variable.

Only create the overlay in `magit-section-highlight', everything else
is used to do is moved to either `magit-section-update-highlight' or
`magit-diff-highlight'.  Remove `magit-section-unhighlight' completely,
`magit-section-update-highlight' now does its job.

`magit-diff-{,un}highlight' not only highlight the hunk(s), they also
refine them, removing them from the respective hooks would disable
highlighting and refining.  To allow just disabling the former these
functions only {,un}highlight if `magit-section-highlight' is part of
`magit-section-highlight-hook', but refine regardless of that.
Merge branch 'n/highlight-hooks' into next