MVKShaderLibrary::getMTLFunction() synchronize and refactor release of Metal objects. Make use of existing autorelease pool instead of discrete retain/release. Wrap entire specialization operation in @synchronized() to guard against Metal internals not coping with multiple simultaneous specializations.