qt: Revamp ClientModel code to handle core signals
Summary:
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
Test Plan: ninja all check-all
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D15131