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.
use overlays to propertize various parts of logs

Ever wondered why faces used for refs such as branch names have a
border?  It is because of this 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.

So when a section is highlighted by changing the background (the
default), then all background colors things like reflabels that are
located inside the section loose their background color.  It seems
someone decided that just the foreground color being different from
surrounding text is not enough and also added a border to the faces
used for such things.  This has been reverted in some color themes
in others it has not.  After this change it is solely a matter of
taste, not visibility whether someone wants to keep the borders.

The borders will probably be removed from the defaults of these
faces eventually.  But this isn't urgent.
Merge branch 'faster-diff-1'
don't use overlays for hashes