Change the way mapped keys work:
   - Looking for a key with readXX() now allocates the key
   - The first KV access is atomic, but	all subsequent accesses
     immediately release the key's lock because the key	will never
     change and	the lock on the	value enforces atomicity, so the
     KV	pair still has atomic semantics

Fix overflow bug in key hash function.	Extended buffer and check for overflow.

Fix data race reading memory data tag so it occurs after the lock is acquired.