Using llvm::ArrayRef rather than std::vector/initializer_list allows us to remove some overloads, avoid some temporary copies, and allows these methods to work with all array-like types.
The only drawback is that initializer lists of exactly two elements become ambiguous for GetChildAtIndexPath, since they could be an array of two size_ts, or a singleton pair of a size_t and a bool. In practice this only requires disambiguation at a single call-site in all of LLDB, so it seems like a decent trade-off.