magit-refresh-commit-buffer: respect magit-diff-U-arg

Close #1127.
When asking for git command, show correct dir
Merge pull request #1133 from vanicat/t/show-dir-where-run

When asking for git command, show correct dir
remove spurious fixme notice
magit-diff-range: return cons cell

... because that is what `magit-ediff' expects.  Close #1134.

Adjust `magit-show' accordingly.

Note that a cons cell is *not* sufficient to represent a
range (e.g. "a..b" vs. "a...b"), so this will have to be
reverted eventually.
* magit.el (magit-commit-add-log): insert before comments

Close #1131.
magit-read-gpg-secret-key: new function

Add new function `magit-read-gpg-secret-key' and new
history variable `magit-gpg-secret-key-hist'.  Close #851.
magit-diff-range: restore old buffer order

Close #1137.
magit-process-buffer: properly setup buffer

Teach `magit-process-buffer' how to properly setup the buffer, i.e
create the root section when called with non-nil CREATE and if the
buffer doesn't exist yet.

Previously this was done in `magit-process-setup', but while that is
only suitable right before starting a process, we might actually need
to display the buffer before any process has run, as is currently the
case for `magit-git-command'.

Close #1138.
magit-process-setup: move definition
magit-process-truncate-log: extract from magit-process-setup
magit-process-truncate-log: cosmetics
magit-process-setup: cosmetics
magit-push: remove kludge for ancient git versions
magit-push: cosmetics
magit-push-dwim: extract from magit-push

Remove the default push implementation from the `magit-push' command,
leaving nothing but calling `magit-push-hook' behind.  Create a new
function `magit-push-dwim' from the removed code and add it to the
default value of the hook.  This allows using a simpler implementation
that is more true to Git, while not disturbing users who have grown
accustomed the, somewhat wacky, old implementation.
magit-push-dwim: port implementation from magit-push-remote

Port the `magit-push' implementation from the `magit-push-remote'
extensions to be used as `magit-push-dwim'.  Remove everything related
to the "push remote", obviously.  This implementation works the same as
the old, it's just cleaner.  It does *not* make `magit-push-dwim' more
faithful to what Git intended.