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.
I don't see the point in moving those functions around. I would leave them where they were to reduce the diff unless there's a reason to move them around (in which case please just let me know).