Sanity checks for shadow glyphs

Partially fixes text, huds and videos in Jeanne d'Arc.
These changes shouldn't negatively impact other games since all it does is makes sure shadow glyphs are within the vector sizes.
The text, huds and videos still don't fully display, but that's because of something else.
Update PGF.cpp
Add a setting to launch a separate CPU thread.
Add mutex locks around list management.

This way we can safely execute lists on a separate thread.
Add a simple message event system to the GE.

With this, the CPU thread feature now mostly works.
Add a way to synchronize with the GPU thread.
Bail when CPU thread disabled to ensure good perf.
Rename UseCPUThread to SeparateCPUThread.
Add a "multithreaded" UI option on Windows.

Not on other platforms since not yet tested.
Use separate condition vars/locks for GPU sync.
Use the native cond vars for the CPU thread.
Be more careful with the stall address.

In case it's moved while running the list.
Don't queue Flush() etc. while on GPU thread.

Oops, that makes it not actually flush properly of course.

Also made a simpler guard wrapper to avoid extra braces in too many
places.  Reduced contention areas slightly.
Try to prevent a deadlock if CPU doesn't NEXTFRAME.
Simplify easy_guard to avoid coding errors.
Don't allow gpu->Flush() to be called publicly.
Fix SyncThread() not syncing during last event.
Add multithread checkboxes to gl UI as well
Don't leak cpuThread objects
Mark multithreading as experimental in the UI