magit-format-duration: make WIDTH argument mandatory
magit-duration-spec: move definition

Move the definition of option `magit-duration-spec' next to the `log'
options.  The duration formatting could theoretically used elsewhere,
but currently it is only used in logs.
fix and improve new log margin

Merge the options `magit-log-time-unit-as-character'
and `magit-log-margin-width' into just one new option
`magit-log-margin-spec', which additionally allows using a duration
spec different from `magit-duraction-spec' (which could come in handy
if people contribute specs for languages other than English).

Only calculate the width of time units once by doing it in
`magit-refresh-log-buffer'.  As a result the new buffer local variable
`magit-log-margin-timeunit-width' is needed.  `magit-set-buffer-margin'
is also now called from `magit-refresh-log-buffer'.

When truncating author names handle wide characters correctly.  Thanks
to Teruki Shigitani for these fixes.
magit-log-toggle-margin: new command