Changes to support 2D and 3D maps

2D maps are a 3D map with only a single Z level so the code is
the same for both types of map.

Added tests for 3D maps that duplicate the 2D tests with an extra
dimension.
Change the co-ordinate type to long for even more things.

Using discrete integer points with a meter per point, a world caps
out around 60^3 light years
Add test to ensure we're cubic

That is, that we can stack cubic chunks on top of each other to go
up or down a very large amount.