Support for two-colour blocks

In isometric mode we can now have blocks with two colours. 
Currently this includes grass, podzol, and mycelium.
Move dimension constants into a new header file

This prevents some circular dependencies that might pop up.
Return block type by reference
Support for half blocks

Stairs are currently rendered as half blocks. It will take more work to
support shapes that differ depending on the rotation.
Support for rotatable shapes

Blocks can now have different shapes depending on rotation; mainly this
is for stairs.

Also made redstone wire look nice!
Pre-calculate highlight and shadow colours for each block type

This doesn't really save any time, but it cleans up the code a bit.