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
magit-stash-at-point: remove unused argument GET-NUMBER
magit-tag-at-point: new function
magit-read-tag: default to tag at point
magit-show-commit: support tags

Teach `magit-show-commit' how to show the commit tagged by the tag at
point.  This doesn't show the tag, it shows the tagged commit, even
for annotated tags.
magit-insert-tags: set the value of tag sections
magit-tag-section-map: new keymap

Bind the commands `magit-show-commit' and `magit-tag-delete'.
magit-confirm: when PROMPT contains "%i", don't append "%i files"

This allows using `magit-confirm' to confirm an action on multiple
non-file items without the generated prompt claiming we are acting
on files.  This is a kludge; once we use this more, we'll probably
do it differently.

Make use of this in `magit-stash-drop'.
magit-current-sections: new function

Add new function `magit-current-sections' as a variant of
`magit-section-region-siblings'.  If the region isn't active it returns
a list with just one member, the current section.  This is a bit of a
kludge, and it likely will be replaced with a better approach
eventually, see #1321.

Use use of this in `magit-sequencer-read-args', `magit-am-apply-patches'
and `magit-format-patch'.
magit-tag-delete: support deleting multiple tags
Merge branch 'n/delete-tags' into next
magit-list-{remotes,tags,remote-tags}: new functions
magit-tag-prune: new command