libdeng2: Files are Lockable and lock themselves automatically

Applied Guards to protect files during multithreaded access. (Currently
a NativeFile is used for flushing messages into.)
Fixed|Multiplayer: Crash when looking for a mobj's model

Clients may have mobjs with an actual null pointer state.
Fixed: Crash when a model was not found

Uninitialized pointers could be returned.

Also, added missing headers for a Linux build.
Fixed|FS1: Memory leak in FS1::findAllPaths()
Cleanup
Minor cleanup
Fixed|PathTree: Memory leak in PathTree::Node::path()

Also added a comment about a worthwhile performance optimization.
Documentation|Fixed: Various Doxygen markup fixes
Cleanup
Fixed|FileHandle: Fixed memory leak in FileHandle
Optimize: Use de::Path with FS1::PathListItem

Representing paths with de::Path has significant performance benefits
when doing lots of path comparisons/processing work. PathListItem now
takes advantage of de::Path.

Plus some minor cleanup
libdeng2|filesys: Log full paths making use of NativePath where suitable

Logging just the name of the file is not particularly helpful.
Documentation|Fixed|Path: Some minor apidoc fixes for de::Path
Fixed|Path|libdeng2: Inverted logic in Path::operator <
Documentation|Fixed: Minor apidoc fixes
Refactor: Switched rend_model.c to C++
libdeng2: Reverted incorrect path manipulations

The earlier changes were invalid because:

- forcing libdeng2 paths to NativePath does not produce valid native
  paths

- NativePath::pretty() is only meaningful in FS1 (removing the common
  "base path")

- during interpretation, files may not yet be in the tree so they only
  have a name, not a path

- as a feed's source, a file may not be part of the tree (but instead
  is a "source" file attached to some file in the tree)
libdeng2: Describing files in a human-friendly manner

Because the libdeng2 FS is a fully virtual file system, the user needs
to know exactly where the data comes from in order to understand the
system and how actions on source data affect the files present in the
libdeng2 FS.

Added a new method File::description() that returns a full, human
friendly description of the file. This includes possible read-only
status, possible path in the FS tree (if in the tree), type of the
file, the possible source, the originating feed, and any other relevant
information specific to the file's type (e.g., type of shared library
if the library is loaded in memory).

File::description() should be used in high-level log messages to give
the user full contextual information about a file.

Low-level/debug messages should stick to name() and path() if possible
to avoid flooding the log with redundant information.
Refactor|libdeng2: Added a separate method for removing base path

Prettifying a native path is not the same as removing the base path.
Now there is NativePath::omitBasePath(), while NativePath::pretty()
replaces known paths with shorter symbols. This makes the latter
usable within libdeng2.
Debug|libdeng2: Investigating odd log behavior (invalid freed pointers)