ISPN-4651 LevelDB crashes JVM when stop() is called concurrently with write()

https://issues.jboss.org/browse/ISPN-4651
>
> And what would we get? We don't need reentrancy, and semaphore looks more
> lightweight to me.
>

Better readability, mostly.

ReentrantReadWriteLock also prioritizes threads that try to acquire the
write lock, so that they are not blocked indefinitely. You can make the
Semaphore `fair` to avoid blocking the `acquire(Integer.MAX_VALUE)` thread
indefinitely, but that also adds overhead.