first pass on automatically recording server-side demos.

setting sv_autoDemo 1 will enable.  you must explicitly set sv_autoDemoBots
1 to save bot demos automatically.  auto-demoing will interfere with manual
demoing, so don't mix the two.

the demos are grouped into a single folder per map + time map started.
optionally, set sv_autoDemoMaxMaps to automatically delete demos from more than N maps ago.
some svdemo cleanups.  fix bug where we wrote the wrong initial sequence
number causing start of demos to be wonky.
make sure we don't delta against a frame not written to the demo
bump up size of demoname to avoid truncation
use the same time format as CL_DemoFilename for default and autorecord demos
move the recursive rmdir to files.cpp, separate logic from FS_HomeRemove
clean up imports so only files.cpp needs the extra headers
Merge pull request #487 from dpadgett/svdemo

Svdemo
[MP] Mark sv_autoDemo as serverinfo, and add it to info response.
[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.