Fix query progress computations.
Quit console immediately on remote  disconnect.
Fix bug in RangeEval-Opt.

Recall that RangeEval-Opt rewrites any expression A op x in terms of the <=
operator. Specifically, it relies on the following identity: given an attribute
A and a value x:

    A >= x  <=>  not(A <= x-1)

This fails for x = 0 because the subtraction becomes undefined. The
algorithm is only defined for unsigned integers. What should we do? Wrap
around? Ignore it? If we simply don’t subtract, we get:

    A >= 0  <=>  not(A <= 0)
             =>  not(A == 0)    (unsigned arithmetic)
             =>  A > 0

This is obviously wrong, as it should be A >= 0. What we really need is:

    A >= 0  <=>  A <= 255

The algorithm does not consider this special case, as presented in the paper.
There's another problematic identity which fails for x = 0:

    A < x  <=>  A <= x-1

The fix is simple. If x is the numeric minimum, then A < x is a
contradiction, and we should always "return false."

This commit fixes both issues.