[libc++][pstl] Implementation of parallel std::search() based on __parallel_find() (#215119)
This PR implements a parallel version of `std::search()` based on
`__parallel_find()`.
The algorithm crops the input range to a range where a potential match
can start and runs a chunked parallel find on the cropped range.
Inside each chunk potential matches are looked for using the serial
`std::search()` and the first one found is returned.
Since it's based on `__parallel_find()`, the algorithm supports early
termination.
Part of #99938.