Split up world/region/chunk files into map and data functions

This is a step toward reusing the data functions for other apps.
Fix small bug with vertical limits
Lots more refactoring

- Chunk limits are stored in the region struct
- Chunk NBT data, limits and byte data are now stored in the same chunk
struct, and read at the same time. This should save time, as byte data
was actually being read multiple times for most chunks
- Chunk map render function has been absorbed into region map render. As
a result, chunkmap.c is now blockmap.c
- Byte offset helper function moved to new dims.c
- Regions are now returned as pointers
- Probably lots of other changes
Consolidate headers