[MP] Fix #352 (vid_restart breaks G2 handling).

This commit fixes the G2 handles becoming invalid after using vid_restart.
To fix this, a 'persistent data store' is introduced which allows modules
to save blobs of data into the engine, and then retrieve this data later
on.

Before the renderer is shutdown, it now saves the state of its
CGhoul2InfoArray object into a persistent data store and restores this
state on load, if the data is available. This also removes the need to
return null G2 handles.

One thing to note: this is reliant on the CGhoul2InfoArray remaining the
same between restarts. This potentially breaks down when switching
renderers, but this can be dealt with when the time comes.

Finally! This commit increases the ref api version to 3.
[SP] Fix invalid G2 handles at vid_restart

This commit is the counterpart to 83d6a7768f.
[MP] Removed a couple of unreferenced local variables that were introduced during demo merges.
[MP] Add cg_noFXSoundSets cvar workaround for siege_korriban.
There's still tons of fire sound played on the map, this just fixes the bugs they caused.
[MP] Minor vm cleanup.
[MP] Init the Zone allocator earlier.  But delay the registration of its cvars and commands.
[MP] Client disconnect pure files fix.
[MP] Make sure more client commands are removed on CL_Shutdown.
[MP] Move some command registration around so they can be used in configs.
Add completion to writeconfig.
[MP] Merge ioquake/ioq3@35a27638feaeedb3910e2e81bfe418eb505ff1f7
initialize qport with random value instead of time (ioquake3 bugzilla 3999)
[MP] net_restart cleanup.
Remove an unnecessary call to NET_GetCvars.
[SP] Remove some unused client code.
Merge remote-tracking branch 'upstream/master'