This patch presents an alternative approach to adding a <version> header and including it from <config>.
Instead of using a <__version> header this patch adds a __libcpp_version *file* not intended for use as a header, and leaves _LIBCPP_VERSION unchanged. This prevents the additional cost of including <__version> from <__config>. To prevent _LIBCPP_VERSION and __libcpp_version from getting out of sync we static_assert that the values match when building the library.
Additionally this patch adds a _LIBCPP_LIBRARY_VERSION macro for reporting the version of the dylib used. This is unrelated to @rsmith's original patch but I've been meaning to implement it for a while.