The new shader parameter system

Closes #19
I thought about it, but then figured - it's not really a big cost for the run-time, since it's only done during initialization.