merge file magit-cherry.el into magit.el

Define the cherry functionality previously defined in the separate file
`magit-cherry.el' in `magit.el'.  The complexity and code size are both
to low to justify having a separate file.  This will also make it easier
to use "cherry" in other parts of Magit.
use existing abstractions to implement cherry

Remove `magit--refresh-cherry-buffer' which reimplemented functionality
already available elsewhere.  `git cherry' can be seen as a `git log'
with less options but an additional twist.  Teach `magit-format-log-line'
and `magit-parse-log-line' the new `cherry' style.  Define the format in
`magit-log-cherry-re'.

Define a washer `magit-insert-cherry-commits' that works like other "log"
washers in that in only washes the list of commits.  Add inserters that
insert header line sections, and add `magit-cherry-insert-sections-hook'
to allow reordering and not displaying the help text, we inherit from the
old implementation.

Always make the help text less verbose.  Don't add spaces around the
cherry type indicator (+ or -), because that only looked good if the
faces used to display them did set the background color.

Note that "Head" means something else in the cherry buffer than the
status buffer.  This ambiguity is inherited from Git, but we might be
able to do something about it later.  The "Upstream" header still has
to be improved.  I had intended to use `magit-format-tracked-line' for
that purpose but that isn't able to deal with the ambiguity of user
input.  And since that is an issue that also effects other areas I'll
leave it at that for now, and don't attempt to prettify the upstream
for now.
magit-wash-log: when washing cherry output, reverse it first

When `magit-wash-log' washes `git cherry' output it now starts washing
by reverse the git commands output.  This makes the order of cherries
consistent with the order of unpushed/unpulled commits as displayed in
the status buffer.

The order of commits in such "preview" commit lists should be probably
be customizable; for now we just make it consistent.
add magit-insert-{unpulled,unpushed}-cherries

Add `magit-insert-{unpulled,unpushed}-cherries', intended for use in
the status buffer and as more informative (but much slower) variants
of `magit-insert-{unpulled,unpushed}-commits'.  Because of the speed
issue don't use them by default and don't even advertise them.

Speedup will come later (most likely by caching cherries in elisp,
instead of using `git cherry').
magit-cherry: change argument order

Switch the position of `magit-cherry's UPSTREAM and HEAD arguments.
In interactive use it makes more sense to read the HEAD first, because
that allows defaulting to the tracked branch when later reading UPSTREAM.
Do not just change the order of reading, actually change the order of the
arguments so that interactive and non-interactive use is consistent.

However do not change the order accordingly for function
`magit-refresh-cherry-buffer' and in the value of variable
`magit-refresh-args'.  Here we should instead be consistent with `git
cherry'.  Also changing the order would complicate things without good
reason.

Don't refuse to run when HEAD (the actual git HEAD not the argument)
is detached.  It is possible to select any rev not just refs as the
cherry head.  And why refuse to run with a detached HEAD if the user
is actually about to select some ref?
add faces magit-cherry-{equivalent,unmatched}

Add the faces `magit-cherry-equivalent' and `magit-cherry-unmatched',
defining them from scratch.  Do not inherit from `magit-diff-{add,del}.
These faces are added exactly because they should not both look the same
as the diff face the corresponds to the same symbol `+' or `-'.  The +┌-
distinction for diffs is distinct from the +┌- distinction for cherries.