Add a diff-options config, similar to blame-options

This is useful for persistent arguments to the diff view instead of
setting TIG_DIFF_OPTS or always passing them on the command line
invocation.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Allow overwriting of a previously set "argv" option

parse_args() is only used by option_set_command() for the two "argv"
style options: blame-options and diff-options.  Allowing parse_args() to
overwrite the destination enables ":set diff-options = ..." to work more
than once from within the tig prompt (or at all if first set via tigrc).

This is safe since argv_copy() handles the necessary freeing, added as
part of 7dfa0b2.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Refactor the prompt command handling into a separate function

Preparation for running prompt commands from keybindings.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Support refreshing the diff view by reloading the data

This allows new diff-options to take effect.  The diff view is still
unrefreshable when reading data from STDIN.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
After setting an option, refresh the view if possible

Redrawing is not always enough but is still used as a fallback if the
view is unrefreshable.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Return a request from open_run_request()

A boolean return value limits the ability of open_run_request() to
handle more complex run requests in the future.  The "quit, refresh, or
do nothing" logic in view_driver(), based on the boolean return value,
is easily represented by returning REQ_QUIT, REQ_REFRESH, or REQ_NONE
from open_run_request() itself.  Returning a request also seems more in
line with workings of other functions which process requests.

The current view is passed to open_run_request(), which enables it to
return REQ_REFRESH as appropriate.  For the future, this also opens the
door for other queries and actions on the view.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Key bindings which execute tig prompt commands

"Internal" run requests now provide a way to add keybindings for tigrc
and tig prompt commands.  For example:

    bind diff F :set diff-options = --full-diff

Much of the change to open_run_request() is increased indentation;
viewing the diff with whitespace ignored (git show -w or pressing W in
tig) reveals the simplicity of the functional changes.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Document the ability to bind internal commands

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>