support X-Trans sensor raw files

X-Trans specific changes:

- use RawSpeed to read RAF files
- downsampling for fast display
- interpolation: bilinear, VNG, and modified AHD (aka Markesteijn), all adapted from dcraw; these operate on floats and use OpenMP
- highlights, hotpixels, invert, rawdenoise, temperature handle X-Trans
- disable cacorrect for X-Trans
- white balance presets and basecurve for X100S
- cameras.xml and adobe_coeff.c entries X-Series cameras
- documentation updates
- dngmeta.sh handles X-Trans

None of these changes should alter performance for users of Bayer sensors. The changes have been tested on Bayer and X-Trans matrix raws as well LDR files.

The code in this pull request doesn't:

- handle "dynamic range" feature on X-Series cameras
- implement SSE/OpenCL optimizations
- implement cacorrect for X-Trans sensors
- include white balance data and basecurves for X-Series cameras besides X100S

There is generally one commit for each major change. For the VNG/Markesteijn demosaic code, one commit imports/wraps code from dcraw, then another modifies this code to use floats/OpenMP and otherwise make it more specific to darktable.

This pull request closes #9951 and fixes #9388.

If it becomes necessary to update to the latest LibRaw, see separate branch libraw-0.16 (https://github.com/dtorop/darktable/tree/libraw-0.16). This pull request for the "xtrans2" branch keeps the extant LibRaw 0.14.7 (with the addition of a small patch to not break the temperature iop for the X-Pro1) so as not to add another LibRaw dependency.
Yes, I'm just sorting through confusion on this! When I declare `out` shared, the compiler complains:
```
imageop.c:2316:48: error: ‘out’ is predetermined ‘shared’ for ‘shared’
   #pragma omp parallel for default(none) shared(out) schedule(static)
                                                ^
```
Here `out` is declared `float *const out`. Does OpenMP only require the pointer itself to be declared shared() (if it is non-const), and not enforce anything about sharing of the pointed-to data?

I was surprised that, when I made a bunch of pointers `float *const`, the compiler mandated dropping them from the omp parallel clauses. It doesn't seem sensible to declare them `float *` and put them back as shared() if the pointer itself doesn't change? Any experience on this is most welcome!