magit-mode-get-buffer: use abbreviate-file-name

Shortens buffer names to
  *magit: ~/src/magit/*
instead of
  *magit: /home/username/src/magit/*
Merge pull request #1363 from npostavs/abbrev-name

Use abbreviate-file-name for naming magit buffers
magit-{diff,refresh-diff-buffer}: remove WORKING argument
remove magit-insert-region
add magit-section-diff-header, replacing magit-insert-diff-header
magit-apply-{hunk,diff}: absorb magit-insert-{hunk,diff}-patch
simplify moving point outside invisible text

This should not be necessary at all anymore, and will be removed
completely in the next commit.  There is a slight risk that I am
wrong about this so I am adding this commit so we have something
more civilized to go back to than the old implementation in case
we need an emergency fix.

See next commit for why we needed this and why we don't do so
anymore.
simplify magit-insert-region-patch, remove magit-insert-current-line
let the command loop move point outside of invisible text

The reason we needed this kludge was that process sentinels which may
cause point to move inside invisible text and which also have to be
considered part of some command did not actually run until after the
command returned.  The editor command loop then went on to do its point
adjustment and then run "threads", including the sentinel of the process
started by the command which just returned.

These sentinels were likely to cause point to end up inside invisible
text, but when they ran it was to late for the command loops point
adjustment to kick in.

We used to work around that by using `post-command-hook' which happens
to be run even later than pending "threads".  Running such sentinels
after the command has already returned caused other issues besides this
one and so that was fixed by waiting inside the command for the process
to return.

This is the right thing to do because the only reason why asynchronous
processes are used in the first place is that this allows sending input
to the process.  But as far as Magit is concerned these processes should
be synchronous.  Now we wait, making at least the commands "synchronous"
and this kludge unnecessary.
add magit-region-patch, replacing magit-insert-region-patch
remove section heading "Mode Utilities"

Having a section for just one minor utility is a bit much.
magit-apply-{hunk,diff}: use with-temp-buffer
remove obsolete iswitchb support

In version 24.4 of Emacs iswitchb will be obsolete and so we
should remove support at some point; let's get it over with.

Besides if I keep post phoning the Magit release, then Emacs
will beat me to it anyway :-(

If someone actually complains, then we can restore this in
`magit-extra.el'.
Merge branch 'trim-apply' into next
magit-start-git: argument INPUT is mandatory

While INPUT can be nil, it cannot actually be omitted.  It
proceeds the rest arguments ARGS, which are the arguments
passed to Git. Since calling Git without any arguments is
an error don't confuse users by pretending INPUT is optional.
rename magit-file-log to magit-log-file

Also rename variable `magit-file-log-file' to `magit-log-file'.
magit-section-case: don't bind any slots

A "case" function should only dispatch, not also establish bindings.
Besides the importance of this macro is decreasing anyway so having
to write some additional code that previously was not necessary is
not all that terrible.
magit-run-git-with-input: default to current buffer and no refresh
improve and document magit-section-{match,when,case}

Also adjust the output of `magit-describe-section' to be more useful
for people who have just read the doc-string of `magit-section-match.'
magit-log-file: without a prefix remove --graph