Kill StaticObserver and enable start/stop of ReplicaSetMonitorWatcher

This is slightly reworked version of the initial PR. 

- StaticObserver is no more
- added initialize() method to ReplicaSetMonitor
- call initialize() where needed in tests
I think this could lead to a weird race condition in which another thread is in the cleanup method (but hasn't reset the replicaSetMonitorWatcher ptr yet) and a thread concurrently calls initialize. I think the expected behavior is that the second thread waits until the call to cleanup finishes and re-initializes the watcher, but with this change the watcher would not get re-initialized.