Removed window between the two synchronized blocks.

In the original version, there was a window between finding a null queue and setting emitting false due to being in different synchronized block. If another thread came in this window, it created a new queue with its event which was not emitted until another onXXX method was called, causing unnecessary event delivery delay.

While running the tests, the ```SerializedObserverTest.testNotificationDelay``` failed from time to time due to thread timing. I haven't fixed this test.