first pass at Markesteijn demosaic for x-trans

Not ready for use! For now this is pretty much the dcraw code wrapped
to work w/in demosaic module. The demosaic pipeline data is converted
to dcraw-friendly format for processing, then converted back
post-processing. The dcraw code is 16-bit integer, rather than
floating point. Provisional and slow, but still noticeably better than
bilinear. Many other pieces need clean-up (c.f. the RGB to LAB
conversion).
retrieve camera matrix for Markesteijn demosaic

Up until now the matrix was a hardcoded hack. Markesteijn does some
work in Lab, and in the dcraw version does this mindful of the camera
matrix, so do the same, falling back to using linear RGB if can't find
the matrix. Linear RGB looks fine, and this is lots of extra code from
dcraw, so should probably either always use linear RGB or use extant
dt code to handle this.
differentiate bayer/xtrans demosaic methods

Previously the same method ids meant different things depending on if
the file had a Bayer or xtrans matrix. Now use a bit-mask to
differentiate the xtrans methods.
make same roi alignment for all x-trans demosaicing

always use factor of 3 -- though linear demosaicing doesn't need this,
switching between the two will offset the image view unless both use
same alignment
Use OpenMP for bilinear demosaic
first pass VNG interpolate

works on ints, not floats, and no optimization, but is better default
than linear, if much slower
if requested in preferences, limit to linear demosaic
VNG demosaic uses floats and openmp

the dcraw code uses 16-bit ints, convert to using floats;
OpenMP makes VNG much less sluggish
Markesteijn demosaic uses floats

previously worked on data as 16-bit integers
should otherwise be functionally unchanged
use OpenMP for Markesteijn and tune tile size
better/clearer Markesteijn demosaic OpenMP

User OpenMP in outer loop of tile processing rather than many nested
loops. This use NUM_CPUS times more memory, but tiles are small so
this should be OK. Also use OpenMP for cielab_init (though that is
temporary code) and for expanding raw mosaic into rgb buffer.
use Yuv rather than Lab in Markesteijn demosaic

Thanks to advice from Pascal de Bruijn that this will be nearly
equivalent with much less code, as the colorspace conversion is only
for determining homogenity of image across luminance and chroma.
tweak and clean up conversion to perceptual space

- try ITU-R BT.2020 YPbPr conversion instead of ITU-R BT.601 as seems
  to do slightly better on specular highlights plus it's so hip and
  cutting edge
- remove spurious luminance added in when doing chroma differential,
  which was a mystery residual of CIELab
- don't need anything from common/colorspaces.h any more
1:1 view demosaicer fixups

This fixes #9388, which applies to all sensors -- make 1:1 view use
chosen demosaicer in mid-quality config.

Update demosaic plugins/darkroom/demosaic/quality conf to mention VNG
in longdescription as x-trans' PPG equivalent. This leaves the config
choice inaccurate for x-trans, but at least doesn't break exsiting
configs. (If change this message to "at most PPG/VNG (reasonable)" then
demosaic will still do the right thing with exiting configs, but the
preferences screen will show a blank entry for this choice
until the user next changes it.)
x-trans demosaic fixups

- give up interpolation on failed malloc
- use dt's CLAMPS
- allocate Markesteijn buffers in a block outside of parallel
  construct to avoid many alloc/free cycles
inpaint highlight reconstruction for x-trans