some fixes from previous rebase
create new map caching infrastructure

adds a per submap cache. That structure stores cached data for a single submap. It can be shifted with the submap and dose not need to be regenerated afterwards.

Moved the seen_cache into that structure.
Future plans for this:
Make transparency, outside and other cached things go there, too.
Add flags for what data is current and what needs to be regenerated.
After that one can add more things to the cache like move_cost
fix bug where the wrong tag for vertical transpancy was used
moved the result of *vertical_view_(up|down) into the new per submap cache
move map::transparency_cache to the new per submap cache

funny indentation so I don't have to change all the code inside the loop
changed map::castLight to be a template function

Because the last four parameters (xx, xy, yx, yy) are never changed, and are passed to the recursive call unchanged.
It makes no sense to forward them as function parameter, it only takes time to copy them.
The template version now creates eight different castLight functions that have their values of xx, xy, yx, yy as compile time constants.
This makes creating the seen cache slightly faster.
made game::target show a 3-D line to target

does not work with snap to target option currently
made map::castLight use the z-level and go into other z-levels as well.

This seems to be an acceptable (at least for now) way to create the seen cache. It works nice for above / below.
The visible area seems at least somehow realistic.
Slightly enhanced hat is drawn on the map

Only if the terrain is t_air, the terrain below will be shown.
This allows floor gratings to be shown, even when one can see through them.
I changed the second floor of the shelter to have both new terrain types:
glass floor: see through, but can be walked and does not allow air through it
floor grating: see through, allows air through, but can be walked on.