Followup 32fef8b5ee247: actually fix event aggregation, unbreak toolgroup disabling

instanceof OO.EventEmitter always returns false because EventEmitter
is a mixin, not a base class. We got rid of isMixedIn(), so I'm
resorting to just duck typing EventEmitters unless and until someone
comes up with something better.

Also fix usage of isPlainObject() where what we really wanted to check
for was isEmptyObject().

The auto-disabling tool demo now works again.

Change-Id: I3bad99492c6dac505b2233bb9204bb591e0dc92c