[libc++] Fix size_t overflow in make_shared<T[]> and allocate_shared<T[]> (#223735)
The computation of the number of bytes to allocate could overflow when
the size was large enough. Fix this by using the overflow-checking
builtins to perform the computation instead.