Another shot at getting change events right for _ComplexValueMixin. Our
previous approach made it impossible to detect if a change was cause
during startup. Now we work purely with widget 'change' events. Children
are connected during postCreate, addChild. If you add children otherwise
you need to call connectChildsChanges yourself. Also to make sure
events are generated, use _setValueInternal if you really need to set
the value attribute yourself.