This commit mostly just replaces bad uses of NDEBUG with uses of LLVM_ENABLE_ABI_BREAKING_CHANGES - the safe way to include ABI breaking changes (normally extra struct elements in headers).
Reid Kleckner suggested that Arthur Eubanks would the correct reviewer for this patch, so adding them!
clang-format: please reformat the code