zink: optimize shader recalc
now we only have to loop over the changed shaders that exist for the program, and we can avoid a lot of hashing operations by reusing stored hash values where possible
now we only have to loop over the changed shaders that exist for the program, and we can avoid a lot of hashing operations by reusing stored hash values where possible