The new shader parameter system

Closes #19
Even so it can prevent inlining due to generating a lot of code (it turns into a conditional with a `fail!()` and some complex formatting).