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



Yes i agree it's a bit confusing for now
I m using Backend and then GLBackend as a specialized version of it
Since these are the the first steps, i don't take advantage of that yet
Where i did changes, ( textRenderer and Model) the source include GLBackend.h explicitely because for now it's just GL calls
In the near future, we should be able to remove any link to GL  and use what's exposed from the non gl classes in gpu/