Fixed|Resources: DD_DEFNS/DD_DIREC lump loading regression

Lumps in WADs are automatically given a suitable file extension when
indexed (.deh for DEHACKED patches and .lmp for everything else), so
the extension must be specified.
Refactor|libhexen: Switched m_cheat.c to C++, cleanup
Refactor|libdoom64: Switched m_cheat.c to C++, cleanup
Refactor|libhexen: Switched p_spec.c to C++
Refactor|libcommon: Switched g_update.c to C++
Refactor|libdoom: Switched wi_stuff.c to C++
Refactor|libdoom64: Switched wi_stuff.c to C++
Plugins: Added libdoomsday to dependencies

Todo: Address symbol conflicts (e.g., Uri vs de::Uri), cleanup...
Refactor|libcommon: Resolved conflicting symbols following libdoomsday dependency addition

Also fixed a couple of minor memory leaks; missing Uri_Delete()s

All plugins now build without error (on MSVC at least).
Fixed|SettingsRegister: Crash if "Custom" profile does not exist

If the "Custom" profile was ever deleted or otherwise went missing,
a logic error in SettingsRegister would cause a crash as it still attempted
to access a profile called "Custom", expecting it always exists.

"Custom" is always supposed to exist, and will automatically be recreated
if missing.
Cleanup|Client: DED structures now use de::Uri pointers (removed unnecessary casts)
Refactor|DEH Reader: Use de::Uri's C++ API
Cleanup|DEH Reader: Removed an obsolete comment
UI|Client: Improvements for popup menus and Home Screen

Adjusted style of popup menu labels. Added some labels to the
App menu.

Moved the game sort order choice to the left side so it doesn't go
under the notification area.
Refactor|WadMapConverter: Reorganized Id1Map components
Refactor|WadMapConverter: Reorganized Id1Map element type deserialization
Refactor|WadMapConverter: Use deng 2.0 components for Id1Map element type deserialization
WadMapConverter: Cleanup
WadMapConverter|Id1Map: Heuristic recognition of id Tech 1 format maps

Rather than rely on the game to provide the name of the map "header"
lump, traverse the WAD lump index looking for lump name sequences of
expected map data. When a sequence of named lumps is found the id of
the map can then be determined and the data lumps conformance checked
according to the expected size for the determined format.

This means that Id1Map can now be used to locate maps without relying
on hints from the game (meaning, it is now possible to locate them
before they are requested by the currently loaded game).
WadMapConverter|Id1Map: Obtaining the last lump inspected by Id1Map::Recognizer