color: optimize the 3D LUT fallback path
This decomposes the 3D LUT in a shaper (3x1D LUT) + 3D LUT. With that, we can reduce the 3D LUT dimension size without loosing precision. 3D LUT dimension size is problematic because it demands n³ memory.
Also, as the curves that were embedded into the original 3D LUT are "extracted" to the shaper, we are able to smooth them. See [1] to understand how this can be beneficial and improve even more the precision for some color transformations.
[1] https://www.littlecms.com/ASICprelinerization_CGIV08.pdf