More Interfaces to decouple Generator from the rest of the code

decoupled cBlockArea from cWorld. If anyone can think of a better name for the interface I will rename it.
Also moved schematic serialization into a separate class. There is also the start of the Benchmark code in this commit as that was what I was working on, however It will not attempt to build unless you set the BUILD_TOOLS parameter for cmake.