- API functions in objectNameUtils now pause the main thread while they do their work, to avoid potential race conditions.
- Moved Signaler to objectNameUtils.
- Moved EventPlayer to its own file
- Eliminated Signaler class, replaced with plain QTimers
get_named_object(): Fixed usage of MainThreadPausedContext so that the get_named_object() timeout feature still works.
unique_child_index is now stored as a Qt property, not a Python attribute on the sip wrapper, which doesn't work for our purposes.
Also, whenever an object is assigned a new name, reassign names to all its (default-named) siblings.
examples: Added some comments to demo_app.py regarding adding new widgets without breaking old recordings.