Changes to terrain: 
- made it an abstract class to support custom grids
- changed shading methods
- other