Race condition causing receive on a nil channel for "watcher" methods

I found a race condition which meant that you could call receive on a nil channel and thus cause a thread to wait indefinitely. Proposed fix is to pass an already made channel to addWatcher() rather than return one.