add SemaphoreLocker and associated specs. Note the TODO item regarding root_lock_node conflict.