Material, some small changes

I had some small problems with my existing code and the new 3d changes and needed to change the Material class a bit.
- Implement Iterable<MaterialAttribute> now the Array isn't accessible anymore.
- Add hasTexture (like needBlending) flag, useful i.e. for enabling/disabling TEXTURE2D on GLES1.
- Cleanup duplicate code.
- Allow adding and removing multiple attributes at once.
- Convenience methods for getting attributes by class type.
- Add #setShader(), not sure how its intended to set the shader without this, but can easily changed if needed.