tuple-like material list

soy._datatypes.MaterialList is a tuple-like class which is returned by soy.meshes.Mesh.materials.

Materials are added to a MaterialList by appending an instance of soy.atoms.Face to a mesh with that material or changing the material of an existing face. Materials are removed from a MaterialList in the same way; by removing all faces using that material or changing the material of each face which uses it.

Currently there is no way to replace or remove materials beside changing each Face directly. This functionality may be added in the future as it becomes necessary, but in the meantime, it's recommended in cases where this is needed to change the properties of a material rather than replace it.

More complete unit testing is needed to ensure the above described behavior is true.