Record graphics API commands in a "gpu::Batch" to separate traversal from rendering

- Introducing the gpu::Batch class that is used to record all the graphics API commands (for now GL) in a command buffer along with the parameters values (copy chunck of memory for pointers parameters)

- The Batch can then be rendered with a call to gpu::backend::renderBatch

- introduced the Batch approach in the Model::render call ( and renderMEshes), all the glcalls issued form this function are collected in one batch and rendered in one call at the end of the function

- This  is the first step to separate the traversal of the scene objects and the actual call to the underneath graphics commands that talk to the GPU driver layer

- I didn't always respected the coding guidelines (the enum names) since i wanted to use Macro to factor a lot of the code we do the record the gl commands.
  
Well for now, all of this is very experimental so i wanted a simple way to enable /disable the feature if something goes wrong