[libc++] Use exclude_from_explicit_instantiation instead of always_inline
This commit adopts the exclude_from_explicit_instantiation attribute discussed
at  and reviewed in  in libc++ to supplant the use of always_inline
for visibility purposes.
This change means that users wanting to link together translation units built
with different versions of libc++'s headers into the same final linked image
MUST define the _LIBCPP_HIDE_FROM_ABI_PER_TU macro to 1 when building those
TUs. Doing otherwise will lead to ODR violations and ABI issues.
Reviewers: rsmith, EricWF
Subscribers: dexonsmith, libcxx-commits
Differential Revision: https://reviews.llvm.org/D52405