Correctly handle the absence of one version of in a merge

Closes #1217.
magit-wash-log-line: fix #1218

All log washing except bisect log goes through `magit-wash-log',
which let-binds `magit-log-line' to 0, even when the log isn't
being truncated.  Only increase `magit-log-count' when the mode
derives (is) `magit-log-line'.  In the bisect case we have to
avoid `cl-incf'ing `magit-log-count's global value which also
happens to be `nil'.
Merge pull request #1219 from vanicat/t/ediff-merge

Correctly handle the absence of one version of in a merge
Revert "Provide autoloads for `magit-key-mode-popup-*` family of functions"

This reverts commit 401ec18265dc63468999ddad6a39cac036fd169f.
magit-key-mode.el: merge some toplevel sections

Merge three toplevel sections because the are going to be refactored
so heavily that the current split and headings would become rather
confusing.  Use a temporary section heading, later to be replaced.
magit-key-mode-{delete-group,de-generate}: remove functions
magit-key-mode-last-buffer: remove variable

It was basically a buffer-local variable whose value was...
that buffer itself!

Function `current-buffer' serves us just as well.
popups: temporarily remove the special "diff options" popup

Removing this now will make refactoring easier.  Once the refactoring
is over, customizing of popup arguments "from within the popup" will
be supported by all popups, not just this special one.

Remove the functions `magit-set-diff-options',
`magit-set-default-diff-options', `magit-save-default-diff-options', and
`magit-reset-diff-options'.  But keep the variable `magit-diff-options'.
popups: temporarily drop hardcoded default popup arguments

This feature will be restored later in a much more powerful way.
Eventually users will be able to add their own defaults without patching
`magit-key-mode.el'.  Until then remove this feature completely, as
doing so makes refactoring easier.

Actually the only such default being dropped here is `--graph' used for
logging.  That's the only one left after the more complex and flexible
"diff option" support has been removed in the previous commit.  But this
does not only remove this one particular default, it removes support for
this hacky feature all together.
magit-key-mode-popup-{*}: define explicitly

It looks wasteful now, but it will get better.

Remove `magit-key-mode-generate'.
magit-key-mode-groups: split into individual variables

* The new variables are named `magit-popup-{*}'.
* Remove variable `magit-key-mode-groups'.
* Remove function `magit-key-mode-add-group'.
* Adapt function `magit-key-mode-options-for-group' accordingly.
magit-key-mode-insert-{argument,switch,action}: remove functions
magit-key-mode-{key-defined-p,update-group}: remove functions
popups: store keymaps individually in magit-popup-{*}-map

Instead of storing all popup keymaps as an alist in
`magit-key-mode-keymaps' store each map in an individual variable.
Do not delay defining the keymaps until they are first used, instead
define them when the library is loaded.

* Define a variable `magit-popup-{*}-map' for each popup.
* Remove variable `magit-key-mode-keymaps'.
* Remove function `magit-key-mode-get-key-map'.
* Adapt function `magit-key-mode-build-keymap' accordingly.
* Adapt function `magit-key-mode' accordingly.
magit-key-mode-draw: assume there always is an action

In function `magit-key-mode-draw' assume that every popup has at least
one action.  It's save to do so, a popup without a single action would
not make any sense.
magit-key-mode-draw: cosmetics
magit-key-mode-redraw: assume there always is an action
magit-key-mode-redraw: cosmetics
magit-key-mode-draw-buttons: absorb magit-key-mode-draw-header
magit-key-mode-{prefix,current-args,current-options}: make buffer-local