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.
  
Brad,
I did that because i cannot use exactly the "glCall" name in the Batch class.
Most of the glCalls are already macros an they get replaced by the pointer to function name cpoming from glew
So if i want to call a method of a class exactly like a gl call, it will get ovverwritten by the preprocessor