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.
This is a good point. A caveat is that the dcraw code is already somewhat refactored. The original dcraw only works on 16-bit ints, so there are some changes to make it work with floats and OpenMP (see SHA: 0a87cec66968cd6038bc24ee3d538bf26c2d933d and SHA: 11c3ba9237789fe7b69bd3ca068a18d43dce610d). There are other changes to make it in accord with dt coding style, and a big patch to change colorspace of homogeneity operation (SHA: ddee52ac515680b5b7e53c4f3ea5eb624b3445c0). Also a fix for cleaner edges (SHA: c9f46fc0c9a49df259d14cdc051825c5f6be5857). Hence it's already becoming a fork.

I certainly agree that trying to clarify complicated code is a great way to introduce bugs.

One reason for importing that dcraw code just wrapped, then making commits to alter it, was in hopes that if dcraw changed, it would become clear how to keep this code in sync. As another case, dt's wavelet denoise code is also borrowed from dcraw, and has gone through quite a few permutations by now.