Refactor|WadMapConverter|Id1Map: Moved all Id1Map data type recognition logic to Recognizer
Refactor|LumpIndex|WadMapConverter|Id1Map: Moved/renamed Id1Map::Recognizer to/as LumpIndex::Id1MapRecognizer
Refactor: Moved command "listmaps" into ResourceSystem

Now uses Id1MapRecognizer to find all the recognizable maps from the
central LumpIndex rather than assuming a game-specific map id format
(i.e., MAPXX or EXMY). Naturally this means that map ranges cannot
be found without either a format hint from the game or using a more
complex algorithm (finding common prefixes in map ids, etc...).

The main purpose of this refactoring is to test Id1MapRecognizer for
locating all the maps from all loaded files ahead of building a map
collection in ResourceSystem.

Todo for later: Improve formatting of the map listing. (Once such a
map collection has been built generating a pretty listing should be
somewhat simpler).
All Games: Command "warp" now also accepts a map URI

One can now specify the map to warp to using a map URI rather than a
logical map number (and episode, depending on the game mode).
For example; warp MAP01; warp E1M1

Although this means that it is now possible to warp to maps that are
not part of the defined map progression, this functionality should be
considered experimental and is intended for development purposes only.

Hexen note:
Map URIs are not translated according to any "warptrans" mappings in
MAPINFO. Rather, this is the actual URI of the map (e.g., warp MAP40
will take you to Dark Crucible, whereas warp 40 won't work).
WadMapConverter: Id1MapElement needs a non-default copy-ctor
Merge branch 'master' into id1-import
libcore|PathTreeT: Added tryFind() specializations to PathTreeT
ResourceSystem: Locate id Tech 1 maps in loaded packages during game resource init
Refactor|WorldSystem: Use ResourceSystem's MapDef in WorldSystem
libcore|libdoomsday|libcommon|libdoom|libdoom64|libheretic|libhexen: Ensure map URIs consistently use a "Maps" resource scheme
World|Map: Maps are associated with their corresponding MapDef

Also addressed a couple more cases where map URIs were being used
without a "Maps" resource scheme.
ResourceSystem|MapDef: Store map id and source file in MapDef

MapDef will be used with all maps regardless of their origin, meaning
they may or may not have an associated Id1MapRecognizer from which to
obtain these properties.
WorldSystem: Provide WadMapConverter with the Id1MapRecognizer to use

This is a temporary arrangement to prevent inadvertent desync with the
converter-recognized map data. Logically speaking, one should think of
the recognizer as "owned" by the converter plugin (and not MapDef).

See the comments in WadMapConverter's ConvertMapHook() for an overview
of how this system should work in the future.
Cleanup|ResourceSystem: Moved MapDef into new source files
ResourceSystem|MapDef: Derive MapDef from de::Record (to hold the property values)

All map-level, Doomsday Script addressable, map property values will
be placed here.
Refactor|libcommon: G_MapAuthor() and G_MapTitle() now return de::String
libcommon: Fix URI episode/map number extraction (refactoring regression)
ResourceSystem|MapDef: Cleanup
Cleanup|libcommon: Moved G_MapTitle, G_MapAuthor and G_MapTitlePatch to g_game.cpp
Console|ResourceSystem: Improved "listmaps" command

Now operates much like the other resource listing commands in that
one may now specify an optional id prefix to match when generating
the listing. For example, the command "listmaps E1" when executed
with Ultimate Doom loaded will output only those maps whose URI
path begins with "E1" (i.e., only the maps of episode one).