NOTE: Sorry for this MEGA COMMIT.

The goal of this commit is to start distinguishing between two types of meshes: system meshes and imported meshes.
System meshes (not implemented yet) will be the typical geometric primitives: cubes, cones, etc: meshes including
a set of "walls", each one with its own texture. On the other side, imported meshes are all those meshes imported
from files.

Code changes:
- Added new classes and structs: ImportedMesh, ImportedPrimitiveData, PrimitiveData and TrianglesGroupWithMaterial.
- Some files have been moved within the directory hierarchy.
- MaterialsList GUI class has been renamed as MaterialsListWidget.
- MeshesManager::createMesh() methods now work with ImportedPrimitiveData and ImportedMesh.
- PrimitiveFile is no longer used for writting / reading primitive files. This functionality has been moved to
  PrimitiveData and ImportedPrimitiveData structs.
- Camera and Light classes now inherit from ImportedMesh.

Minor non-related changes:
- A lot of includes have been moved so those of Qt classes appear first.
- All includes related to C libraries have been wrapped inside of extern "C" blocks.
- The default color of lights on creation has been changed from red to white.