[#2322] Prevent emitter to start multiple times.

Problem
======

Watchdog thread are wild and we can end up staring the same emitter twice.

I have no idea how this can happen since emitters are only strated from "run" and "subscribe" and bot methods are protected by the same lock.

Changes
=======

Main code is here https://github.com/gorakhargosh/watchdog/pull/256

This is just a merge with latest upstream master + that code.

How to test
========

reviewers: @alibotean 

This is just to let you know about the changes.
TestBaseObserver -> BaseObserver