Properly dispose of all input and output adapters
Watcher module uses async event loops in input adapters as the primary background thread mechanism. When the module is told to terminate (SIGINT, SIGTERM, SIGKILL - see #76 (closed)) properly stop and dispose of all input and output adapters, and allow process to exit gracefully.