LLVM is gearing up to move to `std::endianness` and as part of that has
moved `llvm::support::endianness` to `llvm::endianness`
(bbdbcd83e6702f314d147a680247058a899ba261). Rename our uses.
The generic `char_traits` implementation was deprecated and has since
been removed from libc++ (https://reviews.llvm.org/D157058). When
building with a libc++ that has it removed, the `basic_string<T>`
overloads cause errors during template substitution.