window.go
func (w *Window) AddWidget(id string, x, y int) (Widgeter, error) {
	rw, found := registeredWidgets[id]
	if !found {
		return nil, ErrWidgetNotRegistered
	}
	widget, err := rw(w, x, y)
	if err != nil {
		return nil, err
	}
	w.widgets = append(w.widgets, widget)
	return widget, err
}
func (w *Window) AddWidget(id string, x, y int) (Widgeter, error) {
	rw, found := registeredWidgets[id]
	if !found {
		return nil, ErrWidgetNotRegistered
	}
	widget, err := rw(w, x, y)
	if err != nil {
		return nil, err
	}
	w.widgets = append(w.widgets, widget)
	return widget, err
}
// AddWidget is the generic function to add a widget to a window.  This
// function should only be called by widgets.  Application code, by convention,
// should call the non-generic type asserted call (i.e. AddLabel).
// AddWidget shall be called from queue context.