Hmm, there's a good point on clients being able to create connections manually. Right now, they always go through `GjsInterruptRegister` but that isn't really enforced.

I don't know how I feel about integer values as handles. I get that it is standard practise, although IMO, it is not a good standard practise. It means that clients need to know about `GjsInterruptRegister` at disconnection time. It isn't so much of a problem when you have implicit global registers like `GMainContext`, but its one extra hassle here.

If using a `GObject` to manage the lifetime is a really bad idea, then I'd be happy to change it to using handles. It does at least give us the benefit of deterministic unregistration and unique ownership, which I guess is something we do not get with using `GObject`.

(I miss C++)