Add the BufferView class in gpu::Resource

BufferView is a "view" on a gpu::Buffer chunk of memory. the View restrict access of the buffer in the range [offset, offset + size] of the buffer memory block
The view also can specify a Element format allowing to access elements in the Buffer View Range through iterators like in a standard stl::vector

A similar TextureView is introduced in this PR, for now it's an empty shell. it should be the same concept as the BufferVIew but on a to be defined gpu::Texture.

Cleaned several constructors for proper copy behavior with gpu::Resource::Sysmem and gpu::Buffer.

Introduce support for UniformBuffer binding signature on gpu::Batch
this is true UBO on windows and linux and for now it's an emulation using uniform vec4 array on Mac.
The slot where to bind the Buffer in "gpu::Batch::setUniformBuffer(Slot, Buffer)" is the ubo binding slot or the actual uniform location of the vec4 array in the case of mac.

I realize this isn't new code. But these _sysmem = 0; and _gpuObject = 0; should be _sysmem = NULL; and _gpuObject = NULL; to match style in rest of code base. I won't hold the merge for this change, but please fix in next PR.