Preserve user provided extent when resizing

Instead of clearing the entire cached extent any time one of the
brush edges is moved, only the modified value is cleared from the
cached extent.  Then when getting a new extent, only the required
values are recalculated.