If no one objects I will commit this patch.
Problem
-------
On MinGW if a program becomes multithreaded it will bail out.
Reason
------
If a program becomes multithreaded GSPerformHolder will be set up.
This in turn will create a pipe to communicate between threads.
However pipes are not sockets and when it registers the
pipe (non-socket) with the runloop of the default thread
it will bail out because the runloop does not understand
pipes
Solution
--------
Temporary solution is to remove the offending code on MinGW.
This will break performSelectorOnMainThread methods, but at
least multithreading will work.
(This is a short term solution)