Add BlockFace and basic Block methods

Added BlockFace class
Added basic Block methods that will be needed regardless of how the
rest of the API works
Blocks are not aware what world they're in, a dirt block could be in more than one world for example
Instead, `World` (`VoxelVolume`) has `getBlock`