[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.
[MP] Merge ioquake/ioq3@90eb32c5ab01c7ee4815fd33c76fca788ff4214f
Clear referenced paks when disconnecting
After playing Team Arena, if you switch to Q3A and try to play a demo with cl_allowDownload enabled it would print "Need Paks: blah blah" and not play the demo.
[MP] Merge ioquake/ioq3@86c41d39daee32393d5d48f7fe099bbfd18b0fa7
Fix sending reliable commands before being connected, patch by Eugene C. (ioquake3 bugzilla 4971)
[SP/JK2] Removed assertion failure caused by skipping cinematic on artus_mine too quickly
[SP] Fixed crashing on Com_Error

Conflicts:
	code/rd-vanilla/tr_init.cpp
[SP] JK2: Fixed savegames (again..)

Conflicts:
	codeJK2/game/G_Timer.cpp
[SP] Fixed compilation issues caused by merging from JK2:HD
[MP] Fix crashing when mixing C/C++ runtimes

This commit fixes crashing when mixing C/C++ runtimes between the engine
binary, and renderer library. This was due to sharing C++ objects between
the two which is generally bad, unless said object is pure virtual.
[MP] *nix build fixes.