Simplification du chargement de .obj, correction de fuite mémoire

La désindexation était rendue compliquée à cause de l'inversion de l'ordre des données causée par l'empilement des données.
Les fonctions de dump rétablissent l'ordre original des tableaux, ce qui rend tout plus simple.
La lecture des faces a été enroulée dans une boucle de 3 %f/%f/%f
Support du chargement de plusieurs objets dans le meme .obj

On détecte et on stockage l'indice de début et de fin des indices de chaque objet.
Toutes les données de chaque objet sont désindexées et placées dans le même buffer.
Ce sont les paramètres drawStart et drawCount de glDrawArrays qui va permettre de reséparer les différents objets et après de leur attribuer des textures/matériaux différents.
Rangement des fichiers dans dossiers par catégorie
Réorganisation de la boucle de parsage des .obj

Rebalancée autour du test lineHeader == "f" pour avoir une condition else globale dans laquelle enregistrer l'index de fin du mesh
Avant le code de fin d'index était copié dans chaque condition autre que "f"
Modifs mineures
Le code est super moche mais CA MARCHE ! :D

Toutes les textures sont bien chargées et attachées aux bons appels à DrawArrays()
Peut-etre un souci avec la map sponza...
On va nettoyer tout ça et fusionner avec master
Module shader pour mettre en cache les locations d'uniforms