VkSemaphore: Unlock/Lock the mutex outside the blocking_call.
VkSemaphore: Unlock/Lock the mutex outside the blocking_call.

marl::blocking_call() calls the passed function on another thread.
Attempting to unlock a mutex on a different thread that locked it is
illegal.

Also lock for destruction.

Bug: b/140421726
Change-Id: I87226176bc3a1a454d9c79a139f4d42e51f66814
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43908
Reviewed-by: Nicolas Capens <51edc787c30f24c4904e8ffbb5523c3a9f7a451d@google.com>
Tested-by: Ben Clayton <1f693eb7158dc33015048c09d6712f74dabddf79@google.com>
Kokoro-Result: kokoro <2ac7b1f3fa578934c95181d4272be0d3bca00121@google.com>

bkaradzic/SwiftShader,google/swiftshader,google/swiftshader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,google/swiftshader