IntrospectionModule: handle two threads loading type at same time
If two threads are trying to load a type at exactly the same time, it's possible for two wrappers to get generated for the type. One thread will end up with the wrapper that's not blessed as the "real" one and future calls will fail. The blessed wrapper will be incomplete, and so future calls from it will fail as well.
This commit adds a lock to ensure the two threads don't stomp on each others toes.