Quick3DEffect and EffectNode

Effect has been transformed to a non QObject abstract. EffectNode and
Quick3DEffect subclass Effect. This was needed so that Quick3DEffect can have
node children such as ShaderProgram.

Few changes to the backend and renderer to accommodate that a Material's effect
is now returned as a Node instead of an Effect as an Effect cannot be
registered as qml types as it has no QObject base.

Change-Id: Ief40f1d784151a085f244c35b3ed09a93dcc153e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Removed last QML dependency of the Render module.

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

When appending a transformation to a Transform component, the updated
transform matrix was computed prior to having the transformation
appended. This lead to the transform matrix not having the correct
values.

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

When the root node is an Entity, the node root handle was not properly set.
Also added warnings when having a CameraSelector that references an Entity
that doesn't contain a CameraLens components, hence not being a camera.

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

Example using only the cpp API and no dependency to the QML module.

Change-Id: Id5f2a3f297e0db9b4ba3ec4abbb71639cd57ddf8
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Quick3DScene and SceneNode

Examples updated to work with those new nodes. Quick3DScene and SceneNode
subclass Quick3DEntity, Scene and EntityNode, Scene respectively. This will
later ease the process of exposing Cameras loaded from a scene file to be used
by a CameraSelector in the FrameGraph. Also it allows to add children Node to
the scene on the Qml side.

Change-Id: I6843efd0aff60e51a9bd16c63ce19011afd5a8e5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Smaller functions in SceneBuilder

Split the backend scenegraph building in smaller methods.
The FrameGraph is initialized only once the whole scenegraph has been
created. That is needed in order to check if an Entity referenced by a
FrameGraphItem property has been declared inline in QML.

Change-Id: Iaffc2b722b0e6485947f4a32dc273430abbce3fd
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Updated Assimp example

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