gitk: Fix cherry-picking to insert a real row not a fake row
The insertrow/removerow functions were really only suitable for
inserting/removing a fake row such as the ones used for showing
the local changes. When used to insert a real new row from a
cherry-pick, they left things in an inconsistent state which then
caused various strange layout errors.
This renames insertrow/removerow to insertfakerow/removefakerow
and adds a new insertrow that does actually go to all the trouble
of creating a new arc and setting it up. This is more work but
keeps things consistent.
This also fixes a bug where cherrypick was not setting mainheadid,
and one where selectline wasn't always resulting in targetrow/id
being set to the selected row/id. Also insert/removefakerow now
adjust numcommits and call setcanvscroll.
Signed-off-by: Paul Mackerras <paulus@samba.org>