This is a pure refactoring with no behavior change:
- gets rid of QMetaObject::invokeMethod() "dynamic" calls, i.e., without compile-time checks of a called function name and its parameters
- replaces std::binds with lambdas, making parameter permutation (including parameter omitting) explicit
- makes code simpler, more concise, and easier to reason about
This is a backport of core-gui#581