magit-set-buffer-margin: new function

Add function `magit-set-buffer-margin' as a smarter alternative to
`set-window-margin'.  Margins are local to a window, not a buffer.
In practice this is inconvenient.

This new function is similar to the built-in function in that it
arranges for the margin to be setup in the current window.  Additionally
it uses the `window-configuration-change-hook' to update the margin when
appropriate.  Effectively it gives the illusion that the margin is local
to a buffer.

Currently it always sets the right margin and leaves the left margin
alone; but that could be extended if the need arises.
magit-make-margin-overlay: new function

To put some text in the margin one has set the `display' property of
some text appearing on that line.  One should use an overlay for that
purpose, to avoid changing the appearance of the actual buffer text.
That's more or less how it works, actually it is more complicated.
Anyways one shouldn't have to worry about this, it's just how this is
implemented on the Emacs side.  This function hides the strangeness.
magit-ellipsis: new option
magit-log-author-date-cutoff: remove face
magit-log-margin-width: rename variable

Rename `magit-log-author-date-max-length' to `magit-log-margin-width'.
The margin will eventually be used to display arbitrary information.
magit-format-duration: new function

The algorithm is fairly stupid and can certainly be improved.
refactor author/date margin in logs

To begin with use the term "margin" instead of "overlay".  The fact that
we use an overlay to do this is an implementation, which is not of
interest to users.  So we use the term "margin" as part of symbol names
to give users an idea what this is about.  Remove the terms "author" and
"date" from symbol names; we might later allow displaying other
information instead.

Rename the option
`magit-log-show-author-date' to
`magit-log-show-margin'.

Remove the functions
`magit-log-make-author-date-overlay',
`magit-log-create-author-date-overlays',
`magit-log-refresh-author-date', and
`magit-log-setup-author-date'.

Add the function
`magit-format-log-margin'
and the options
`magit-duration-spec' and
`magit-log-time-unit-as-character'.

No longer let git format the age of commits as human readable durations.
Instead use the recently added function `magit-format-duration'.  If we
kept on letting git do it we would have to parse git's output because it
sometimes uses two different units (which doesn't work for as because we
the available width is very constrained).  And we would have to do this
for N languages supported by git.  So let's just do it ourselves.  Users
have to customize the new option `magit-duration-spec' to use another
language.  That option can also be used to drop time units, e.g. to go
from days straight to months, omitting weeks. The algorithm used to
create time strings should probably be improved.

Use the recently added functions `magit-set-buffer-margin' and
`magit-make-margin-overlay' instead of spreading their (related but
separate) tasks across the removed functions and their callers.
Merge branch 'pr/log-overlay'