gsourceclosure: fix idle/timeout/signal closures, add child watch support