This patch overhauls how we pick up the ABI library. Instead of setting
ad-hoc flags, it creates interface targets that can be linked against by
the rest of the build, which is easier to follow and extend to support
new ABI libraries. It also adds a new ABI library called "system-libcxxabi",
which represents linking against a LLVM libc++abi already installed on the
system, and solves existing issues when trying to build against a system
libc++abi outside of the now-unsupported standalone build.
This is intended to be a NFC change, however there are some additional
simplifications and improvements we can make in the future that would
require a slight behavior change.
All of these values refer to system ABI libraries except for libcxxabi where libcxxabi is the in-tree one and system-libcxxabi` is the system one. From a consistency perspective, I think it'd be better for libcxxabi to also refer to a system ABI library, and then use a different name for the in-tree one, perhaps default?