Replace INBOUNDS macro with map::inbounds function

Make map::inbounds const,
Add a second version of map::inbounds to check tripoints.
Because both are functions and not macros, the compiler will automatically choose the correct one.
remove game::is_in_ice_lab as it's unused
add constant access to field iterator
Port Creature::pos to 3D (tripoint)

Changed Creature::pos to return a tripoint instead of a (2D) point.
Change creature_tracker to use tripoints only.
Made wrapper for rl_dist that takes tripoint and point, so one can call
them with any combination.
This creates some conflicts where the function was used. The position is temporarily wrapped into 2D-points there.

Added 3D-wrapper for game::mon_at, game::npc_at and game::critter_at
Added some actions to shift the view vertically

Added "Experimental-Z-Level" to the default mods because it makes sense now.
Made some drawing relateved function use tripoints

Made map::drawsq, map::draw and game::draw_critter expect a tripoint as
center.

Also make all parameters to map::drawsq mandatory.
Ranged targeting uses the 3D-point already but that won't be visible as there is no key binding to change the z-level there.
Made game::draw_ter use a 3D-point

Add a separate function with no parameters instead of using magic default values.
Add game::ter_view_z to match the other two ter_view_* members.
Make json handle point and tripoint directly.

Instead of implementing the serializer/deserialzer interface, support
direct input/output of point/tripoint objects. This is similar to plain
old data types and std::string.

Made constructor of tripoint explicit to avoid some bug.
Remove the monsters-on-stairs system.

It's simply not needed for z-levels.
Add min-z, max-z members to map, default to currently (0,0)

Removed map::nulveh as it is not used at all.
Added some helper function for getting the nonant/submap in map.
Changed map::grid to be a std::vector instead of a fixed size array.
Made parameters of loadn & saven tripoints.
Convert some code to use map::get_nonant

Add some more helper functions.
Duplicate many map-functions to 3D

Add a overloaded version of each function that uses tripoints instead of x,y or point objects.
Made some functions in map const
Made some map functions use their tripoint argument in further function calls.

Main code for those functions is no in the 3D-version, the 2D-version of the function redirects there.
Made the graffiti functions in map const correct.
Create submap containing air and roof tiles,

Contains special handling to place roof on top of indoors tiles and stairs on top of stairs

Make the starting shelter have an upwards stair to reach the roof.
Add vehicle::smz to store the z-coordinate of the vehicle

Similar to vehicle::smx, smy.
Not yet used in all places were it should be, that's on the TODO
Port some more functions of map to use tripoints:

map::pl_sees, map::update_vehicle_list, map::determine_wall_corner

make the seen_cache 3D.

made map::light_at and map::pl_sees const functions
Introduce MAPHEIGHT for default map height

It is used as value for zmin and zmax (with proper sign) and therefor contains the maximal z-offset in both directions (currently 0, so effectively 2D only)
Make vehicle cache 3D

Minor change: only insert valid points into map::veh_cached_parts,
makes it easier to check and remove points as veh_exists_at is synchronous to veh_cached_parts
Changed veh_cached_parts to use tripoints instead of std::pair<int,int>
Changed veh_exists_at to be 3D.