watch: fix memory leak in Watch class

See systemd manunal[0],
```
If the second parameter of sd_event_add_io() is NULL no reference to
the event source object is returned. In this case the event source is
considered "floating", and will be destroyed implicitly when the event
loop itself is destroyed.
```

The Watch class should release the event source object when destructing
the Watch object.

Tested:
1. Run CreateDump Stress Test
```
while true; do busctl call xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/bmc xyz.openbmc_project.Dump.Create CreateDump a{sv} 0; sleep 200; done

```
2. run the command to monitor the memory heap size of dump-manager,
and no memory leak found.
~# watch -n 10 "cat /proc/[PID]/smaps | grep heap -A 4 | grep ^Rss"

[0]: https://www.freedesktop.org/software/systemd/man/latest/sd_event_add_io.html

Change-Id: I530bda40a7a7307ee87f03a24c242dde4eae2b14
Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com>
diff --git a/watch.cpp b/watch.cpp
index 9b6b6f3..4e87431 100644
--- a/watch.cpp
+++ b/watch.cpp
@@ -22,6 +22,7 @@
 {
     if ((fd() >= 0) && (wd >= 0))
     {
+        sd_event_source_unref(source);
         inotify_rm_watch(fd(), wd);
     }
 }
@@ -51,7 +52,7 @@
     }
 
     auto rc =
-        sd_event_add_io(eventObj.get(), nullptr, fd(), events, callback, this);
+        sd_event_add_io(eventObj.get(), &source, fd(), events, callback, this);
     if (0 > rc)
     {
         // Failed to add to event loop