add Widget::HandleVisible/HandleInvisible internal events

These virtual methods can be implemented by specific widget types to let
them do things when they are added or removed from the tree of visible
widgets.