Merge most isometric and orthographic render functions

This gets rid of a lot of code duplication.

Also got rid of the heightmap rendering functions, finally.

Also fixed a bug in the out-of-bounds check in
world::get_path_from_rel_coords.

Also, the measure_world function was still switching on rotation for no
reason at all, so removed that.
Changed texture struct format; added isometric block side culling

Sides of blocks are no longer rendered if the block in front is opaque.

Now storing shapes inside the texture struct so we can quickly check the
shape ID for a block.

Shapes are currently defined inside the texture source file, but we'll
find a nicer way of doing this.