libcommon|GameSessionWriter: Try to avoid reopening the .save by updating the cached metadata

SavedSession keeps a copy of the deserialized metadata in memory to
avoid having to reopen (and decompress) the .save each time. We can
try to avoid an immediate reopening of the package by replacing the
cached metadata once the .save is final.