refactor shader node generation into a generator (it needs to yield more than a node sometimes)
generating value nodes instead of filling in default values in the elements themselves. Cycles wasn't reading that