MessageLoop now defers all sources event to the main loop.

This ensures that MessageLoop never calls into uncontrolled code while
holding a lock which could easily lead to deadlocks.