Empty QFrameAllocator class

Change-Id: Ie3b7c7488be96edee9536fe7849b35957526df6a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QFrameAllocator + unit tests

Change-Id: I0bf124236d0bf8f28c347b07ab323e64091c5e6f
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Renderer / RenderviewJobs : some ground work to use QFrameAllocator

Each RenderviewJobs is now assigned the index of the current frame to which it
is processing for. Is also now contains a QThreadStorage that contains a vector
of QFrameAllocator indexed by frame number. Later on, RenderView,
RenderCommand, QUniformValue ... will be allocated using the QFrameAllocator
specified for the current frame.
That way each Thread has its own set of allocators indexed by
frames and don't need locking to be accessed within the thread's context.
Allocators recycle their memory between frames which should help both
performances and reduce leaks.
The Renderer can now be constructed by specifying the number of
maximum cached frames to be processed.

Change-Id: I748bce37eb6dd9e60303bae8bed5db469d539139
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Rendering using QFrameAllocator

Renderer contains a QThreadStorage object containing a vector of
QFrameAllocator. Each Renderview Jobs calls the Renderer to retrieve the
QFrameAllocator for their thread and their frame index (between 0 and the maximum
number of cached frames). If the QThreadStorage hasn't been initialized, it is
initialized, otherwise the QFrameAllocator is returned directly. The
QFrameAllocator is automatically cleared if the previous call wasn't for the
same frame index.
QUniformValues and RenderViews have been updated to used QFrameAllocator to
allocate objects instead of using new.
RenderQueue has been slightly modified. It is now possible to retrieve the
RenderQueue to render without popping it out of the QCircularBuffer of
RenderQueues. A call to popFrameQueue does that. This is needed to be sure
that we won't be rendering a RenderQueue that could have been cleared because
the backend is rebuilding a newer frame. This forces the Renderer to render
the whole frame before allowing the Jobs to build other frames if there are
more than the maximum amount of cached frames.

Change-Id: Ie7718e201e2f6b420903092d1706277e9786916e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QFrameAllocator added valgrind macros to help debugging

Change-Id: I6cbf360e86cae4fdfcef123d7142aced04b616dd
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>