Change the definition of Material to allow the combination of image and attribute parameters.

Refactor Material's methods such that mapping types are now explicitly named, swizzles are only allowed on images (told ya so), and getting a material mapping has an additional parameter specifying if mapping actually exists.

Reimplement Material's methods to conform to the above refactoring.

Add and implement additional method to allow unmapping individual materials.