Smart/Enhanced materials - not ready for merge

I am working on a scene that uses a variety of material types, so I went ahead and put together a draft framework for the addition of bump/normal, spec, and alpha maps to `PhongMaterial`, `DiffuseMaterial`, and `SimpleMaterial`. These materials will swap code in and out based on what textures are being passed to it.

Map support by material:
PhongMaterial - Bump/Norm, Spec, Alpha
DiffuseMaterial - Bump/Norm, Alpha
SimpleMaterial - Alpha

While making the enhancements I also massaged the code of all classes so they followed a similar structure.

Currently this new functionality is breaking `BaseObject3D.addTexture()` and I haven't dug into that yet, but I thought I would get some input/feedback on the approach.