magit-key-mode-popup-committing: support --author option
magit-wash-diffstat: split regex to make it easier on humans

This is just in preparation to make it longer.
magit-wash-diffstat: support binary files

Binary files are displayed with "Bin XXX -> YYY bytes" instead of the
change count and graph. The numbers correspond to the old and new sizes
of the binary file, not lines added/removed, hence the capture groups
for these are left empty and this text left with no special faces.
magit-ellipsis: use #x2026 for "horizontal ellipsis"

to avoid encoding problems.  Close #1249.
magit-with-emacsclient: use --socket-name even with default server-name

When actually using a socket for communication, then always pass the
`--socket-name' argument to the Emacsclient.  Do so even when neither
the `server-name' nor `server-socket-dir' have been set to something
different from the default values.

Just because a user did not configure Emacs to use something else,
doesn't necessarily mean that she did not attempt to so, but stopped
after making adjustments to shell init files.  I.e. there are users
with incomplete configurations, who gave up on using the Emacsclient
after having shot themselves in the foot by incompletely configuring
client/server communication.  Magit requires cannot do without the
Emacsclient and so we have to override such mistakes.
Fix magit-insert-untracked-files & 'status.showUntrackedFiles' git config

Commit 1c4136e cleaned up magit-insert-untracked-files to always rely
rely on status.showUntrackedFiles, however it's broken when this
configuration is not set:
in such case 'git config status.showUntrackedFiles' returns nothing, not
the default value as the code expected.

Then git status was run just with "-u", which is equivalent to "-u
all". It's not what the user specified by not defining
'status.showUntrackedFiles'. It should be "-u normal" in such case.

This commit fixes and simplify this by removing the git config retrieval
altogether since git status reads this config, even with the
"--porcelain" flag.

(This git status behavior is a little ambiguous in the man: it says the
output format will be stable "regardless of user configuration", so one
can wonder why the 'status.showUntrackedFiles' user config is not
ignored. But it's about the output *format*, and not the output itself.)
magit-process-mode: don't turn on view-mode

This was a leftover from the old implementation, which didn't use a
major mode derived from `magit-mode'.  Back then `view-mode' was used so
that we could just use `view-mode-exit' instead of having to implement,
something similar ourselves.  Likewise that took care of making the
buffer read-only.

Now that we actually do use a mode derived `magit-mode' we also get that
for free.  So the use of `view-mode' no longer any benefits, and at the
same time has at least the drawback that we loose some key bindings
which are potentially useful.

Close #1259.
magit-key-mode-groups: fix two arguments
magit-anything-{,un}staged: use git-diff

In the case of `magit-anything-staged-p' that means, that we no longer
have to specify a revision, and so it now works before there is a HEAD.

Close #1256.
magit-anything-modified-p: new function

replacing `magit-everything-clean-p' whose name was even more ambiguous.
magit-init: translate ~ for the benefit of `git init'

Apparently `git init' doesn't understand what "~" means.
Employ a translator.  Close #1264.
magit-process-kill: new command
magit-turn-on-auto-revert-mode: default to not doing it

Also see https://groups.google.com/forum/#!topic/magit/shCpTvyyygI.
magit-key-mode-popup-committing: remove --amend switch

It is not needed because there already is a Amend action.
bring auto-reverting of file-visiting buffers under control

Do not rely on `auto-revert-mode'.  Instead add a new global minor mode
`magit-auto-revert-mode' which is explicitly called by `magit-refresh'
and only reverts buffers that visit files that are tracked in the
current repository.

Buffers are no longer reverted if they change for any other reason than
running a Magit command.  Doing that was a bad idea because users where
not aware of this happening and those that were aware might not want it.

Users who do want the old behavior back can instead (or additionally)
turn on `global-auto-revert-mode'.
remove suggestion to use obsolete magit-wip-mode
magit-wash-hunk: cleanup
magit-wash-hunk: highlight whitespace errors only on added lines

This increases performance.
properly encapsulate overlay hack and properly dispose overlays

Add the function `magit-put-face-property' as a substitute for
`magit-put-text-property' to work around a limitation mentioned
in info node `(elisp)Overlay Properties':

  Currently, all overlays take priority over text properties.
  Please avoid using negative priority values, as we have not
  yet decided just what they should mean.

We already did the same before, but re-implemented that in every case
in which it was needed.  Unfortunately each of these implementations
contained the same severe bug: the overlays were not removed when the
diffs got updated.  Overlays negatively affect performance and so these
buffers got slower over time.  Now these overlays "evaporate" when they
become empty, i.e.  they are automatically removed.
magit-highlight-line-whitespace: avoid false-positives

Avoid false-positives when displaying combined diffs.