This change creates Sema::BuildImplicitCast, which the rest of Sema now uses to create implicit casts. The main change in terms of interface is that now, technically, creating an implicit cast could fail. However, the current implementation of BuildImplicitCast never does because it simply calls ImplicitCastExpr::Create.
Nevertheless, Sema users of ImplicitCastExpr::Create, and their downstream users in several cases, were updated to allow failing, except in some cases (such as in OpenMP) where existing code already didn't bother to check implicit casts failing.
rdar://74050758
clang-format not found in user's PATH; not linting file.