Merge pull request #2199 from kitskub/master

Remove ComplexMaterial
Misc changes for lighting and worldgen

- changed .getColumn() to use column rather than block coords

- Hardened generateColumn() in regionGenerator to have a single finally for locks

- Calculates surface height from y = 0 region before creating SpoutColumn (or chunks)
-- This gives better initialization of the surface height

- Fixed bug with Region scheduling
-- Previously, when a SpoutRegion is created, it is added to the scheduler, but if the putIfAbsent
-- for the region map fails, it is then removed.  This is an ArrayList, so the remove step removes the
-- "live" region instead.  This leads to dead regions.
-- Regions are now added to scheduler after successfully being added to the region hashmap

- Added queueChunkForGeneration to world and region
-- This shifts world generation to tickstart and outside the snapshot lock
-- Observers will refresh observed chunks once they have been generated, after the tick
Only restrict getChunk from PRESNAPSHOT or LIGHTING if gen is required

Signed-off-by: Jack Huey kitskub@gmail.com