gitk: Fix more bugs resulting in Tcl "no such element in array" errors
First, update_arcrows was being overly aggressive in trimming
displayorder, resulting in calls to rowofcommit sometimes trimming off
commits that layoutrows had asked for in make_disporder and was relying
on having present. This adds a vrowmod($view) variable that lets
update_arcrows be more precise in trimming off the invalid bits of
displayorder (and it also simplifies the check in make_disporder).
This modifies modify_arc and its callers so that vrowmod($view) is
updated appropriately.
Secondly, we were sometimes calling idcol with $i==-1, which resulted
in a call to ordertoken with the null string. This fixes it by
forcing $i to 0 if it is less than zero.
This also fixes a possible infinite recursion with rowofcommit and
update_arcrows calling each other ad infinitum.
Signed-off-by: Paul Mackerras <paulus@samba.org>