magit-section-match-1: rename from magit-prefix-p

This function is not generally useful, it is intended for
use by `magit-section-match' only.  Rename it accordingly.
magit-section-{action,case,match,match-1}: remove doc-strings

These removals are only temporary.  The old doc-strings will be
replaced with better ones once the upcoming refactoring is over.
magit-section-match: support CONDITION being an atom
magit-section-{case,action}: section paths are now vectors

This is actually implemented in `magit-section-match'.

Because `magit-section-case' is loosely modeled after `case' it should
work similar to that with regards to matching multiple things:

  (case EXPR
    (thing ...)
    ((two things) ...))

So this is not so good:

  (magit-section-case (item info)
    ((a-thing) ...)
    ((also just one thing) ...))

This commit changes this to:

  (magit-section-case (item info)
    (a-thing ...)
    ([also just one thing] ...))

The next commit will extend it to:

  (magit-section-case (item info)
    (a-thing ...)
    ([also just one thing] ...)
    (([another thing] yet-another-thing) ...))
magit-section-{case,action}: support multiple types per clause

  (magit-section-case (item info)
    (a-thing ...)
    ([also just one thing] ...)
    (([another thing] yet-another-thing) ...))

This is actually implemented in `magit-section-match'.
cosmetic changes to uses of magit-section-{case,action}

If SECTION or INFO is unused, use `_' as variable symbol.
magit-section-{case,action}: change order of type context vectors

Expect clause type context vectors to be in the order in which they
are actually processed.  That is the most narrow section now has to
come first.  If that doesn't match, then the rest doesn't even matter.
If it matches go on checking whether the parent (second element) also
matches and so on, until no more ancestor requirements are defined.
magit-guess-branch: fix section matching
magit-section-match: if CONDITION is t then return t

Previously this special case (being the non-special case :-)
was taken care of in `magit-section-case'.
section actions: refactor how additional clauses are added

This adapts the api to how it is actually used in the wild.

* Run the action hook before the default clauses.
* Remove `magit-add-action-clauses'.
* New actions are now added individually.
  * There was not a single case that made use of the possibility
    to add multiple clauses at once.
  * To add a clause to things are required:
    * Use of `add-hook' to add to `magit-OPNAME-hook'.
    * Use of `set' to set `magit-section-action-context' for the
      hook function.
section actions: refactor how new struct and its slots are bound

This adapts the api to how it is actually used in the wild.

* Always bind the symbol `it' to the section struct.
* The ARGLIST now consists of an arbitrary list of `magit-section'
  slot names (symbols) which are bound to the respective value.
* Actually other symbols but those identifying slots are allowed.
  The only restriction is that a function `magit-section-SYMBOL'
  which takes a section struct as argument has to exist.
* Add `magit-section-parent-info' because that information (the
  value of the INFO slot of the PARENT section of the section)
  is required quite a few times.
remove rewrite clause from actions' default clauses

This prepares for the removal of the "rewrite" functionality.
(Which might come in the form of a separate package, but I am
hoping that won't actually be necessary.)
magit-revert-item: ask more specific questions
end misguided uses of magit-section-context-type
magit-section-context-type: sections always have a type
Merge branch 'pr/section-case'

New doc-strings will be added soonish.