Small refactoring in event queue logic, ignore multithreaded setting change

This refactors out the event queue logic into a separate class (plan to move it to a separate file.)  I'm wanting to merge it already only because it changes the interface for consumers slightly (ProcessEvent) in case the in-progress DirectX or software backends are rebased.

Also, ignores changes to `g_Config.bSeparateCPUThread` after startup, so it won't cause trouble.

-[Unknown]