Reworked the watcher system. Watchers now listen to the hooks themselves. New watchers can be added at runtime.