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]`
Is this an internal error, or can a user trigger it? I thought Rustic style was moving in favor of pushing errors that aren't internal problems out to be handled by the client...