Make it possible to customize the shader applied to an object.

This allows custom shaders to be created.
The interface of the `Material` trait is not final yet.
Add the demo `examples/custom_material.rs'.