More aggressive shrinker for choose/2

The old shrinker would simply subtract one from the current value, which
was ineffective when shrinking large ranges (e.g. choose(0, 16#ffffffff)).
This new shrinker converges towards min by repeatedly halving the
difference between current value and min.