Improve `show_region`
Improve `show_region`

`show_region` only used `view.show` on a widened region; a region with
some context added.  This works reliable but for wide jumps, i.e. the
target region is not in the viewport, it still only scrolls as few as
possible, usually bringing the target only on the bottom (or top) of
the screen.

We add a new strategy for such wide jumps where we try to bring the
region roughly at the center of the viewport.  This is similiar to
calling `view.show(..., True)` but here we also try to fit the region
into the viewport if possible.

Note that we don't just center the region in the viewport, nor do we
center just the starting line.

divmain/GitSavvy,divmain/GitSavvy,divmain/GitSavvy