Add support for the Compact C Type Format (CTF) in LLDB. The format describes the layout and sizes of C types. It is most commonly consumed by dtrace. We generate CTF for the XNU kernel and want to be able to use this in LLDB to debug kernels for which we don't have dSYMs (anymore). CTF is a much more limited debug format than DWARF which allows is to be an order of magnitude smaller: a 1GB dSYM can be converted to a handful of megabytes of CTF. For XNU, the goal is not to replace DWARF, but rather to have CTF serve as a "better than nothing" debug info format when DWARF is not available.
It's worth noting that the LLVM toolchain does not support emitting CTF and I don't intend to change that. XNU uses ctfconvert to generate CTF from DWARF and that's also what's used by the test.
the ctf header is a uint16+uint8+uint8 and then a bunch of uint32's. DataExtractor::ExtractBytes will only correctly extract 1-32 byte items when buffer endianness doesn't match host endian. If we really want to support a big endian CTF correctly, these fields need to be extracted individually. (even if the overall size is less than 32 bytes, this method would byteswap all of them as if they were a single value)