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

https://issues.jboss.org/browse/ISPN-4651
I haven't used the fair version of semaphore (it's configurable in ctor param) because I want to keep the overhead as low as possible, and I don't expect the application to be really contending on the store when it is about to be stopped (or completely cleared).

Regarding readability - OK, .writeLock().lock() might be more obvious than .acquire(Integer.MAX_VALUE), but as I've said before, I prefer the lightweight solution. Let's have some democracy (sh!), if @tristantarrant prefers rwlock as well, I will be outnumbered and have to rewrite that.