replaced @watchers class variable with WATCHERS module variable to eliminate coupling between LeaderWatcherFactory class and the concrete classes that implement BaseWatcher
minor changes, updated the implementation of elect method