add message dispatcher in widget.c

Now widgets can choose to dispatch a message to its chilren. This should
be useful in panel.c and window.c.

The next step is to change the behavior in register_window(). It seems
to actively repaint all the children of the registering window, using
the old object-tree structure.