Smart/Enhanced materials - Please Help Test!

[Please Test This Branch](https://github.com/Davhed/Rajawali/tree/enhanced-materials)

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
`GouraudMaterial` - Spec, Alpha
`SimpleMaterial` - Alpha
<del>`DiffuseMaterial` - Bump/Norm, Alpha</del>

While making the enhancements I also massaged the code of all classes so they followed a similar structure.

<del>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.</del>

<h3> EXAMPLE

````java
PhongMaterial myNewMaterial = new PhongMaterial();
myNewMaterial.addTexture(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.diffuseTexture));
myNewMaterial.addTexture(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.alphaTexture), TextureType.ALPHA);
myNewMaterial.addTexture(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.normalTexture), TextureType.BUMP);

BaseObject3D myObject = newBaseObject3D();
myObject.setMaterial(myNewMaterial);
myObject.addLight(new PointLight());

addChild(myObject);
````