Bug Fixed: (1) using Java Enum to implement simple and thread-safe
Singleton pattern (2) synchronize the if-then pattern in KVStore#put()
method to ensure the non-decreasing of its versions; using multiple
separate locks instead of exclusive access for better performance
Doc: improve the multi-thread access doc for KVStore.java