Adds counting semaphores

An attempt on implementation of counting semaphores requested in Issue #162 , both mutex and java implementations should be working

Two questions about ```reduce_permits```:
first, in Java it is a protected method used (according to the docs[1])  ``` in subclasses that use semaphores to track resources that become unavailable```. Is this method needed?

second, does it make sense to raise an error if doing the reduce would bring available permits below zero? Another approach would be to reduce available permits to zero if anyone attempted to do this

[1] https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html#reducePermits(int)
@adamruzicka So long as everything happens within the mutex, `tap` is fine. I'm surprised that `tap` is the fastest variation, but the numbers don't lie. Thank you for humoring us and looking into this!

Timing with a simple clock the way you did is perfectly fine, but you may want to take a look at Ruby's [Benchmark](http://www.ruby-doc.org/stdlib-2.1.5/libdoc/benchmark/rdoc/Benchmark.html) class. It provide's more information. You can see how it's used in the couple of [benchmark scripts](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/examples/benchmark_atomic_boolean.rb#L17) in the `examples` folder.