Fix auto-abbreviation of author names

When all author names are less than 11 characters long all author names
would automatically be abbreviated. For example running this command in
the Git repository would show "Jeff King" as "JKing":

    > tig -S--porcelain Documentation/git-status.txt

Fix this by passing in the configured author column width instead of the
calculated column width.
Improve display of commas and spaces in the help view
Rewrite index diffing to use git-status

Use the porcelain format of git-status to only execute one command
instead of three when querying the index for changes. The API has been
kept more rich than necessary so it can be used to improve the code
watching for index changes.
Group option toggle bindings together in the help view
Never show any actions for a hidden keymap
Fix infinite loop when parsing view columns

To reproduce use the following main-view options:

    set main-view = author:width=12 # ...

Reported by Mantas Mikulėnas.
Use buffer when reading data using io_get()
compat: add proper work-around for missing strndup

Some plaforms (such as OSX 10.6) lack the strndup() function.

This patch borrows and adapts the strndup.c code from the libiberty. The
work-around can be enabled via configure (and config.make.in), via the
config.make file by adding the line 'NO_STRNDUP=y' or when calling make
by adding 'NO_STRNDUP=y' to its parameter list.

Fixes #286

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Use buffer for reading view data

Change the view update code to pass the buffer from io_get() to the view
read methods and use the buffer when extracting view data via
io_memchr(). This fixes views that use NUL-terminated input to work
correctly when data is encoding, for example when "gui.encoding" is set.

Fixes #287
Ignore 'gui.encoding' and 'i18n.commitencoding' when set to 'UTF-8'
argv: revert part of a3079e2

Since we have compat_strndup(), let's revert part of a3079e2 which used
malloc() + strncpy() instead of strndup(), in argv_remove_quotes().

In the meantime, constify arglen and unquotedlen.

Refs #286

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Merge remote-tracking branch 'vivien/compat/strndup'
Only use the delimiter character for trimmed and unscrollable text
Improve warning for obsolete view UI options
Improve documentation of view settings in tigrc(5)

Use more consistent naming convention (view setting vs column option).
Move examples up before the column option documentation to give a better
idea of how the view settings work. Mention 'column option' several
places so users can copy-paste key words from the obsolete option
warning and find the documentation in tigrc(5).
Move cursor to the first line when :0 is entered

This aliases `:0` to `:1`.
Fix documentation of author width option

Auto-abbreviation is enabled when the width is in the rante 1..10.
Fix release script to work for patch versions
tig-2.0.2
argv: ensure closing parenthesis in variables

While format_expand_arg() can assume a variable is well formed,
format_append_arg() should not.

A command using '%(prompt' without closing parenthesis causes Tig to
segfault. This is due to format_append_arg() which assumes the presence
of a ')' char, resulting in the 'next' variable being 0x1 (NULL + 1).

This patch checks for this case and return FALSE in consequence.

In the meantime, constify variables in these two functions.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>