Initialize global mutex in a thread-safe manner

Currently, ShInitialize() and friends call glslang::InitGlobalLock()
which *overwrites* the global mutex. As such, even though it ostensibly
takes a mutex, this function is actually completely thread-unsafe.

Fix it by using pthread_once to ensure the mutex is only initialized
once, and then never again.
diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp
index 3f029f0..81da99c 100644
--- a/glslang/OSDependent/Unix/ossource.cpp
+++ b/glslang/OSDependent/Unix/ossource.cpp
@@ -172,7 +172,7 @@
     pthread_mutex_t gMutex;
 }
 
-void InitGlobalLock()
+static void InitMutex(void)
 {
   pthread_mutexattr_t mutexattr;
   pthread_mutexattr_init(&mutexattr);
@@ -180,6 +180,12 @@
   pthread_mutex_init(&gMutex, &mutexattr);
 }
 
+void InitGlobalLock()
+{
+  static pthread_once_t once = PTHREAD_ONCE_INIT;
+  pthread_once(&once, InitMutex);
+}
+
 void GetGlobalLock()
 {
   pthread_mutex_lock(&gMutex);