Implement desaturation, desaturate invalid menu items.
Define a keyboard scan code for PrintScreen.

There is no real scan code for the PrintScreen key under DOS, but it
is convenient to be able to bind it as a screenshot key. Define a
"fake" scancode (126) to represent PrintScreen so that it can be
represented as a key binding in configuration files. Also add some
comments/notes to the scantokey[] lookup table.

This fixes #369.
strife: Fix default music volume to match Vanilla.

Strife's default music volume is 13 as opposed to Doom's value of 8.
This was apparently not changed during the development of Chocolate
Strife. Thanks to Alexandre-Xavier for noticing this and providing the
correct value (bug #347).
setup: Make default sound volumes match Vanilla.

Doom, Heretic, Hexen and Strife have different default SFX and music
volumes. Make sure the setup tool sets the appropriate default when
creating a new configuration file.

Thanks to Alexandre-Xavier for reporting this and providing the
correct defaults. This fixes #347.
video: Fix crash when running fullscreen with -2.

Remove special logic for setting a scale factor (2x, 3x, etc.) when
running fullscreen instead of windowed. This fixes a crash due to the
fact that I_GraphicsCheckCommandLine() is called before SDL's video
subsystem is initialized.

This makes -2 identical to -geometry 640x480, which is arguably a
better (more easily comprehensible) behavior.

Thanks to Fabian Greffrath for reporting the bug. This fixes #338.
Fix .rc files so version info shows on Windows 7.

Thanks to Brad Harding for the bug report. This fixes #319.
hexen: Allow abort on startup by pressing escape.

Vanilla Hexen allows the game startup to be aborted by pressing the
escape key. This can also be used to abort netgame startup. Add back
this functionality by polling the SDL event loop; this feature only
works if the graphical startup is enabled, but that's good enough.
video: Fix calculation of -devparm ticker.

The released linuxdoom source had the devparm ticker dots at a spacing
of two pixels rather than four pixels (as used in Vanilla Doom). In
commit 4a31ec8fcee20e.. I changed this back to four pixel spacing, but
forgot to multiply the number of tics to adjust as appropriate. Fix
this so that the dots are calculated just like Vanilla Doom is.

Thanks to _bruce_ for pointing this out on Doomworld, and to
Alexandre-Xavier for questioning my reasoning when I wasn't convinced
that the current behavior was wrong. This fixes #360.
textscreen: Add label for PrintScreen key.

Needed to properly fix bug #369.
misc: Add string utility functions.

It's more readable to write "M_StringEndsWith(..." than doing a bunch of
pointer arithmetic, and this is a common pattern. Also add
M_StringStartsWith, M_StringJoin and M_StringCopy. The latter is a
safe alternative for strcpy() that works the same as OpenBSD's
strlcpy(). Use these functions in a few places where it makes sense.
misc: Add M_StringConcat.

Just as M_StringCopy behaves the same as strlcpy(), M_StringConcat
behaves the same as strlcat(). Use this in one location.
Fix erroneous call to M_StringJoin
doom: Eliminate use of unsafe string functions.

Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
heretic: Eliminate use of unsafe string functions.

Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
heretic: Eliminate use of unsafe string functions.

Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
misc: Make arguments to string functions const.

Where a pointer is to a buffer that does not need to be mutable for
the operation of the function, use const char * instead. This avoids
some type errors where constant string are passed.
strife: Eliminate use of unsafe string functions.

Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
setup: Eliminate use of unsafe string functions.

Eliminate use of strcpy, strcat, strncpy, and use the new safe
alternatives.
common: Eliminate use of unsafe string functions.

Remove some remaining uses of strncpy() and use M_StringCopy() instead.
HACKING: Add note about unsafe C functions.

Add a section to the HACKING file listing unsafe C library functions
that should not be used.