- Added stubs for AssetManager class and made it a Service.
- Replaced Scene::addViewer with Scene::addObject. Finding out if a viewer is
  being added to the scene can be done in the same member function.
- Added 'SuzanneRigidBody' for debugging. It is a RigidBody subclass that will use
  Blender's Suzanne 3D model.
- Added stubs for the ColorRGB and ColorARGB classes.
- Added stubs for the Vector3 class.
- Added 'TaskPriority' enumeration to make it easier to manage task priorities.
- Added the test to check if nodes are pruned so that they can be skipped during
  graph traversal.
- Added an output operator for QStrings.
Changed 'enable' parameter type from double to boolean.
Overloaded the Node::render method so a RigidBody can now create a render task.
- Added a Model3D class to group meshes and materials together. This
  makes it easier to manage related mesh and material data as one asset.
- Since meshes are now contained inside Model3Ds, they're no longer
  considered an asset.
- The AssetManager now privately inherits a QHash that will keep track of
  all loaded assets.
- Implemented AssetManager::loadModel3D.
- Added a file reader for Wavefront .obj files.
- Added 3D homogeneous points (Point4).
- Vertex now inherits from a 3D homogeneous point (this makes it easier for matrix transformations).
- Implemented the Viewport class.
- Added stub for clipping function.
- Added stub for backface culling function.
- Implemented a very basic rendering pipeline.
- Implemented Matrix4-Point3, Matrix4-Point4 and Matrix4-Vector3 multiplication operators.
- Fixed a bug in the Matrix4-Matrix4 multiplication operator.
- Fixed a bug in Framebuffer::fragmentPasses where the correct offset was not being returned.