The new shader parameter system

Closes #19
Seeing this example, it could be named `gfx_macros` or similar, to avoid confusion...