Introduction of the Context and Backend class and the OpenGL version: the GLBackend

- Add the gpu/Context files containing:
    - gpu::Context class the encapsulation of the graphics api where the Batch can be enqueued
    - gpu::Backend the abstract class that actually implement all the rendering of the Batch commands.
    A Context contains a Backend which is where the Batch command are beeing executed 

- Add the gpu/GLBackend files containing:
    - gpu::GLBackend the GL specialization of the gpu::Backend

The Buffer class got cleaned and now doesn't need to know anything about OpenGL. It only carries a "Backend::GPUObject*" which is where is stored the specialized set of data required for a given Backend to use the Buffer with the graphics api. In the the case of GLBackend, the real GLuint buffer object.

- Added a few "PROFILE_RANGE()" macro to check overall performances using the Nsight tool on Window