map: Add callback for map height changes.
Fix #83: Draw landscape as tiles.

Currently each tile spans 16 map cols and 16 rows. Each tile is prerendered when marked dirty, so the landscape doesn't have to be completely drawn on every frame.
The tiling makes it possible to create larger maps because the offscreen rendering of the landscape was limited by the max surface size.
In addition, it is now possible to mark dirty a single map position which in turn will mark the corresponding landscape tile dirty. As a result usually only one tile (or at most four in rare cases) will have to be redrawn when the map height changes.