Major iteration on our shader parameters

I was going to do another major step with the associated items, which is mostly orthogonal. I don't mind doing it as a part of this CL, but merging this is backwards compatible thus safe anyway.

Fixes #302
Partially solves #312 
Also, deprecates `#[unused]`