Shader- night desaturation is functional!

Overall cleanup. The average is calculated in a separate method and used in weighting via the mix() function. Average is thresholded by a hyperbolic tangent function- this means day, even when looking straight at grass in moody, is not desaturated. The desaturation calculation is also fixed btw. Next up is weighting desaturation by individual fragment luminosity in addition to the average, in order to restore color to light objects in dark frames.