EmptyObserver and TestObserver

* Remove `EmptyObserver` as it was confusing compared to `Observers.empty()` (fixes #1741)
* Make `TestObserver` not throw `OnErrorNotImplemented` if a delegate is not provided (fixes #1571)