fix savegame reading.
remove a useless argument in play_replay

video is ignored, it is always obtained from display
split off terrain data caches from the gamemap object

This commit splits some of the functionality of the gamemap object
into a new class, the "terrain_type_data" object. This class is
intended to hold a record of known terrains and the terrain code ->
terrain type map. It handles merging in new terrain definitions,
and it is shared between map objects. It is also cached by the game
config manager, so that we only recalculate this data when we
change configs.

There is in fact a *semantic* change going on here, which is that
when a scenario introduces a new terrain type by merging, this gets
added to the global cache. The alternative is to make a copy of the
global cache, only for the this scenario, as soon as we have to
dirty the cache. However since I didn't see any downside to putting
the merged terrains together and carrying them across scenarios,
I opted not to do that here.
fixup some silliness in display.cpp
reduce code duplication in help pages
use the game config manager's terrain cache in play_controllers

this completes 1a4efb6b22aeb0742c9083a7d0515ebdef799078 by
passing a reference to global terrain data cache to these
functions
cleanup some of the noise in earlier diff

The decision is to forward more methods of terrain_type_data from
the gamemap object
fixup: fix an assertion failure in titlescreen > help