Ensure there is at most one write access per definition of an llvm::Value. Keep track of already created value write access by using a (dense) map.
Replace addValueWriteAccess by ensureValueStore which can be uses more liberally without worrying to add redundant accesses. It will be used, e.g. in a logical correspondant for value reads -- ensureValueReload -- to ensure that the expected definition has been written when loading it.
This is was originally part of D13762.