semaphore
====

Go semaphore implementation.

- Safe for concurrent use.
- `Resize(int)` method resizes the semaphore.
- `Acquire()` can fail immediately or after specified timeout.
- `Available()` returns the number of available calls to `Acquire()` which
will succeed with any calls to `Release()`. Useful to expose state of available
resources in a resource pool.

