Positive Z-levels(...)

Since I want to add a second floor to the Rivtech facility, I need to get positive Z-levels working.

After diving into the code(including that huge if statement in mapgen.cpp), I *think*, I know what needs to be done to get it working,  since a lot of the base is already there.
Implement a "SEEZ", that tells us how far up and down the player can look at most(and by extension, how many of the up/down slices should be loaded into map)

Extend map to store SEEZ times more submaps
transparency_cache etc. can stay the same for now - visibility calculations will ONLY happen on current z-level
<b>implement special submap type that is homogeneously one terrain(e.g. only air, or only rock):DONE-empty z-levels filled with sky </b>
rewrite anything that changes the player's z-level to do map::shift with the new z-level instead
optional: don't shift the map on every z-level, shift it only on every N z-levels
expand creature to have zpos()
expand the creature tracker/mon_at to be fully 3d
expand the stored traps to be fully 3d
expand map::i_at, ter_at, furn_at, get_ter, tr_at, etc etc to be fully 3d
One nit here, I'd prefer this be "open air" or similar, reserve "sky" for the situation where we're describing the upper boundary that we can't interact with.
A specific area where "sky" is inaccurate is if you're looking out a window and see forest or another building, but it's still accurate to call it open air.