ISPN-3665 SingleFileStore is not thread-safe for passivation

* Make FileEntry immutable to fix issues with free() deleting an entry and
  write() reusing the FileEntry instance while _load() is still reading
  from it.
* Add a global read-write lock to fix an issue where write()/free() could
  write past the end of the file when a clear() happened in parallel.
  This would create an invalid file with a lot of zeroes.
* Delete duplicate test