Replacement for a WaitChild function.
Coverity issue 36696
get rid of warning about order initialising variables
ok. yet another initialisation-order warning
Allow recursive static init (ROOT-5856).

First remove the global init holder (such that subsequent initializers are
added to their own array), then iterate through the init functions.
This fixes initializations that in turn trigger initializations.
Ok, now it's becoming rocket science with

child processes/background threads and a lot of messy hacks and workarounds:
1. 'root' is the first process started, it creates ROOT's process and shows a splashscreen
2. to show a splashscreen and process related events, parent process has to convert into foreground
   and become a real Cocoa application
3. After that, there is no way back - this process has to:
   pull event from Cocoa's event queue (otherwise, it's considered as non-responding by the system)
   wait on a child process using waitpid.
4. waitpid is blocking itself (in non-blocking mode I'm not able to catch process status change), so we ...
5. create one more thread for a waitpid (which suspends)
6. after waitpid 'fires' we inform a mainthread :)
7. mainthread does the remaining job of 'generic' WaitChild from rootx.cxx.
8. wooooooo
Fix uninitialized values (Coverity)
Fix uninitialized values (Coverity)
Fix uninitialized values (Coverity)
Fix potential memory leak (Coverity)
Fix uninitialized values (Coverity)
Fix uninitialized values and resource leaks (Coverity)
Fix resource leaks (Coverity)
Fix uninitialized values (Coverity)
Fix uninitialized values (Coverity)
Fix uninitialized values (Coverity)
Fix uninitialized values (Coverity)
Add test for recursive static init.
Create build directory before operating on it.
Fix ROOT-5972