A Go semaphore primitive