[EventLoop] Fix removing non-existant streams from the event loop

This PR adds unit tests and the appropriate fixes to work around removing streams from the event loop that were never added in the first place.

While this may seem kind of awkward to begin with, it's a quite common situation to remove a single stream (that was indeed added to the event loop) several times. Because of react's async nature, these additional calls should be ignored.