Add semaphore_test.go, with Benchmark

* Benchmark is failing, need to debug what's going on.