support spaces in command-line args

On modern windows system, any arg that is a path value is somewhat likely to have spaces in it.

Linux and SDL frontends for Quake tend to handle these correctly, but various Windows-native Quake frontends don't really. Let's fix it here!

The main change is in WinMain in sys_win.c, to make sure we interpret the argument tokens from the command line correctly. See the code comments for more details.

COM_InitArgv in common.c needs an ancillary change, to properly show arguments-with-spaces in the constructed "cmdline" console variable. Also make sure to properly backslash any quote characters, or backslash characters that aren't already inside quotes.
some whitespace fiddling

Having to use actual tab characters in code gives me fits. :-)
better take on constructing cmdline var

So the problem looks like this:

- We want to populate a var with the command line used to launch Quake.

- We are trying to reconstruct that command line from the argument vector.

- Proper reconstruction depends on the arg-quoting conventions in the environment used to launch Quake.

In the spirit of minimal churn to the existing code, what I've settled on is:

- COM_InitArgv will use a bash-like quoting convention for command-line reconstruction. Pretty simple stuff: quote arguments that contain whitespace, backslash-quote any actual quote chars, and backslash-quote backslash chars as needed.

- If the caller doesn't want that convention (which, in Windows, we don't) then the caller can provide the actual command line if that's available, to be used instead of reconstructing from the arg vector. On Windows, the command line is in fact available, so provide it.

I've been using this with the Windows build... works fine, populates the cmdline var as expected.

The Linux build compiles and starts, but I don't have a graphical Linux environment yet that can run reQuiem (fails with XF86DGANoDirectVideoMode) so you'll probably want to sanity-test this on Linux still.
comment fix
Revert "comment fix"

This reverts commit 97ad26da6c4441336ae03dd9de80bec186dca7b5.

Whitespace armageddon from doing the edit directly on GitHub itself.

Will try a more normal method instead now...
comment fix

This time for sure!
don't allocate args that will just be ignored

When COM_InitArgv constructs com_argv, it ignores any elements of the input
argv past MAX_NUM_ARGVS.

It's a waste to convert those ignored args to ANSI and allocate space for them
(and also a memory leak if we don't get rid of them afterward).

I don't really like referencing MAX_NUM_ARGVS in both WinMain and
COM_InitArgv, but it solves this particular issue. And the previous WinMain
code also used MAX_NUM_ARGVS so eh it'll do.

===

One side effect of the way I fixed the quoting behavior in the "cmdline"
console variable on Windows, that I might as well mention while MAX_NUM_ARGVS
is on my mind:

The "cmdline" console variable value on Windows will show all the args, even
beyond MAX_NUM_ARGVS, up to the max size of that string. I'm not super worried
about that however because:
- Nobody is going to exceed MAX_NUM_ARGVS (50) in practice. If they do, then
  the fact that Quake silently discards some of the args is already a problem.
- The "cmdline" variable's behavior is sort of janky already... inconsistent
  between platforms and across engines, and it doesn't seem to be used for
  much if anything.
- MAX_NUM_ARGVS is 50 and the max "cmdline" value length is 256, so for any
  discarded args to appear in "cmdline" the average length of each arg would
  have to be 4 characters at most (not counting spaces between args). That
  ain't gonna happen.
Merge pull request #20 from neogeographica/support_args_with_spaces

support spaces in command-line args