26902 Initial code review

Created a branch from the very first commit to be able to review the whole code written so far.
This does not mean that a merge should be done after the review is done, this is a "dummy" pull request.
Some details would be welcome here, some things look a bit magic. For example, how can _engine.show_modal retrieve some data from an arbitrary widget_class and return them to its caller ?