Factored widget behavior into delegate.

This allows reuse of behaviors like clickability and togglability. For example,
we have Button and ToggleButton which extend TextWidget, but we also have
ImageButton which has the same behavior as Button but different visualization.
It used to have a copy of Button's behavior code, now they share the same code.
I was going to add ToggleImageButton and was loth to further copy and paste,
but now I don't have to.

Also TogglableTextWidget went away because that behavior is now obtained by
using Behavior.Toggle. ClickableTextWidget was already slated to disappear, and
disappear it did.
Some hackery removal.

You can no longer override Button.onClick(Pointer.Event), you have to use a
slot (which is now easier due to Button.onClick(Slot)). ToggleButton no longer
exposes a public field 'selected', you use the selected() method, just like
you'd use the clicked() method on Button.
Factor some commonality into TextButton.