Focus
=====

Only one widget can have focus at the time.
Top widget has link to currently focused widget in 'focuswidget'.

Events emitted on change: focus, unfocus

mousedown - focus widget under mouse

tab - focus next child in container (depends on canfocus())
shift-tab - previous child

hide() -> unfocus

tab/shift-tab into / out off containers?
trapfocus # if True, tab cycles inside container

widget.hasfocus()
