[OpenGL] optimized rendering (map split in chunks, only chunks around camera are rendered)

Optimized rendering for OpenGL.

Map is divided in chunks and a circular array is used to store chunks around camera.
Chunks are only rebuilt if needed.

Optional parameters (CHUNK_SIZE, VISIBLE_CHUNKS, CHUNKS_TO_TESSELATE_PER_FRAME) will be added to the json file in the next commit.