fix mandatory recalc in rtb_label_set_text()
smarter redrawing logic

the way it used to work: when an element is marked dirty, its surface
redraws it during the next draw() cycle. the element was then
responsible for clearing its own bounds. unfortunately, this would break
when a containing element had a background color and the element being
redrawn didn't fill its bounds completely (for example, knobs).

the way it works now: when an element is marked dirty, we walk rootward
in the tree to find the closest element we can clear to transparent, and
we add that to the renderqueue. works nicely.