This allows for easier testing (notable allowing for comparisons),
better performance (thanks to inlining instead of vtable indirection),
and should ease the deserialization of `Material`, `Shape`, and
`Texture` traits. This should allow `Object` to be deserialized easily.
This required changing the place were the normal, the texel projection,
and the reflection were calculated to avoid possibly expensive lookups.
I also changed the style a bit to make it more readable.