UI: minor fix to ensure the replay exists when needed

(cherry picked from commit 6873bd3736e88a2d059fa90a9eb34f818f069bbe)
UI: Initial support for saving and loading a debug session
* This saves a json document which links the initial trace file to a set of snapshots
* Edited / outdated / valid properties are stored with each snapshot so that the snapshot indicator in the UI can be restored properly.
* All 'rel_path' properties are relative to the location of the session file. This allows the trace file, session file, and session data folder be moved to a new location and still be loaded. Only relative paths are currently supported.

Future goals:
* Ideally, any state of the UI should be included in the session so that active tabs / drop-down selections / texture zoom settings / etc are restored when the session is loaded.
* Indications of which shaders are edited should also be included (after the UI itself supports indicators of these changes)
* The original trace file should NOT be changed when the initial snapshot is edited or if/when we support the insertion and removal of API calls, so any changes to the API calls should be stored in this session file as well.

(cherry picked from commit 8ede72592ca94d754442e3f097ba03b546047ab1)