Combine eo_add() and eo_do(), plus related cleanups.
Fold some common code into widgetAdd, and related cleanups.