This patch applies some general cleanup to shared_ptr and its implementation structures:
- stop using compressed_pair to store objects.
- implement __allocate_shared to reduce duplicate code.
- remove _LIBCPP_HAS_NO_VARIADICS. I don't think it is necessary, but I can add it back if it is.
Changing the __compressed_pair to these two separate members changes the layout of __shared_ptr_emplace and in turn breaks the ABI.