Respect upper-bound of `choose` during shrinking

Commit f2f23a21dc5c95664d44290c1b1c5db095566423 only addressed
respecting _lower_ bounds. This was fine if the upper bound was a
positive number, but when both the lower and upper bounds are negative,
like `(choose -50 -20)`, the generator would shrink to numbers greater
than `-20`. This commit also adds a test.