Replace on_* method by PyGObject equivalent do_* and use a WeakValueDictionary to keep the couple id, record used as user-data value on TreeIter. Closes #13855