Terrain_datum now tracks a list of areas which may be built on that terrain.
City_map::get_terrain_datum() returns a Terrain_datum* for the specified tile; if out of bounds, returns Terrain_data[TER_NULL].
Check the list of allowed areas for the selected terrain when trying to build an area; return false without enqueuing if it's not listed.