Refactor: Replaced fileidentifier_t with FileId

FileId is a new C++ class which thinly wraps an MD5 hash (produced
with QCryptographicHash) into an object.

FileId instances can be built directly from file paths using the
static fromPath() method or constructed from a known Md5Hash.

FileId also implements an asText() method (and, operator String() )
which converts the hash to a textual, hexidecimal representation
and as implementor of LogEntry::Arg::Base - can written directly
to a Log.

The file system's management of file identifiers has been replaced
with an always-sorted QList of FileId instances.
Refactor|FileSys: Replaced ldmapping stuff with a list of string pairs

We can't presently use a Map or Hash for these. Although the paths
are unique, several of the existing algorithms which match using
patterns assume they are sorted in a quasi load ordering.

Todo: Rethink the implementation once the rest of the refactoring
work has been completed.
Refactor|FileSys: Replaced vdmapping stuff with a list of string pairs

We can't presently use a Map or Hash for these. Although the paths
are unique, several of the existing algorithms which match using
patterns assume they are sorted in a quasi load ordering.

Todo: Rethink the implementation once the rest of the refactoring
work has been completed.
Refactor|FileSys: Moved the file system's global data into de::FS

Todo: Cleanup
Refactor|FileSys: Moved de::FS private instance data to ::Instance
Refactor|FileSys: Allocate the loaded- and open- file lists with FS::Instance
FileSys|Refactor: Allocate the Wad- Zip- and Auxiliary- lump indexes with FS::Instance
Refactor: Switched fs_util.c to C++
Refactor: Post fs_util C++ fixes
Refactor|FileSys: Moved path string composition out of de::FS::listFiles()

The C API function F_ComposeFileList() now uses de::FS::collectPaths()
to first collect a PathList of the files it is interested in before
then compositing the paths of said files into a string.
Cleanup: Moved implementation of de::FileId to fileid.cpp
Cleanup
FileSys: de::FS should assume UTF-8 for 8-bit file paths
Cleanup|FileSys: LumpInfo is no longer used by C modules

LumpInfo is no longer used directly by C code modules and because
the C wrapper API for de::FS provides other means to get at the
values it holds - the opaque handle is no longer needed.

LumpInfo is now a C++ struct in the de namespace.
Cleanup|FileSys: LumpInfo is no longer used by C modules #2
Fixed|GCC: Ambiguous named symbol references in dd_games.cpp and dd_wad.cpp
Fixed|GCC: Extraneous scope resolution operator in fileid.h
Fixed|GCC: Fixed more supposedly ambiguous symbol name errors
Fixed: Many C++ namespace problems in recently refactored code

The core issue here is that the global namespace is polluted by both
opaque handle typedefs and similarly named classes brought in from the
de namespace. This practice should be discontinued. The opaque handles
should only be visible in C code and in the code that defines the
C wrapper functions -- never in C++ code where the actual classes are
available.

Also, instead of "using", putting the class method definitions inside
the namespace will tell the compiler to prioritize that namespace over
the global one, resolving some of the identifier lookups.
Fixed: Infinite recursion in FS::lastModified()

When a file is being opened, a call to FS::lastModified() is made to
determine its modification time. However, FS::lastModified() tries to
open the file to find out what the modification time is…