widget: Clarify some corner cases

I checked Cairo source code (actually pixman, as Cairo just passes
through) to make sure that the behavior stays identical: negative values
cause an error message from pixman, zero is allowed. Both return an
empty region which gtk_widget_queue_draw_region() would then proceed to
ignore.
range: No need to frce a recalc

A resize will already trigger a recalc, so no need to explicitly trigger
it.
range: Changing the min slider size requires a resize
range: Introduce finer-grained invalidation

The invalidation doesn't do anything yet, it just clears up what
actually needs recalculation.
range: Refactor a function

This is in preparation for more places that want to
queue_draw_location().
range: Implement gtk_range_calc_slider() properly
range: Implement gtk_range_calc_stepper_sensitivity() properly
range: Only call needed functions from adjustment changes

No need to recalc the whole range when all that changed was the slider.
range: No need to update mouse location when starting a drag

The mouse position doesn't change here. Plus, all callers have just
updated it anyway.
range: Remove unused variable

The variable was TRUE from the beginning and only ever set to TRUE.
range: Properly queue draws when doing a drag

The dragged area needs to be marked as :active during the drag.
range: Handle redraws inside update_mouse_location

This way, we can do finer-grained invalidation. Plus, we get to not
duplicate all the queue_draw() calls.
range: Implement :hover for the whole widget