OPENDJ-2335: prevent JE index corruption due to phantom reads
During an index update operation we attempt to insert an ID into an ID
list. There are two code-paths:
* the key (+ ID list) already exists: read the record with a RMW lock,
compute the new ID list, and replace the record
* the key does not exist: compute the new ID list (single ID) and put it
in the index.
In the second case there is risk that two threads race to create the new
record with the second one over writing the first. This is because it is
not possible to use a RMW lock on an non-existent record. The fix is to
insert the new record using "putIfAbsent" semantics, and retry the
entire process if the put fails.