Reorganization of the loader to correctly load and free libraries and
implementation of load order to load different types of libraries.

diff --git a/scheduler/thread.c b/scheduler/thread.c
index b6909ce..c3a39b2 100644
--- a/scheduler/thread.c
+++ b/scheduler/thread.c
@@ -281,7 +281,7 @@
     LPTHREAD_START_ROUTINE func = (LPTHREAD_START_ROUTINE)thdb->entry_point;
     PROCESS_CallUserSignalProc( USIG_THREAD_INIT, 0, 0 );
     PE_InitTls();
-    MODULE_InitializeDLLs( 0, DLL_THREAD_ATTACH, NULL );
+    MODULE_DllThreadAttach( NULL );
     ExitThread( func( thdb->entry_arg ) );
 }
 
@@ -318,7 +318,7 @@
  */
 void WINAPI ExitThread( DWORD code ) /* [in] Exit code for this thread */
 {
-    MODULE_InitializeDLLs( 0, DLL_THREAD_DETACH, NULL );
+    MODULE_DllThreadDetach( NULL );
     TerminateThread( GetCurrentThread(), code );
 }