Removing llvm::distance and llvm::copy for iterator_range based on post-commit review feedback. Adding an explicit range-based constructor to SmallVector, which supersedes the llvm::copy functionality.
Reverting llvm::distance changes to use std::distance with iterators instead, per post-commit review feedback.

Replacing llvm::copy changes with SmallVector range-based construction which is a considerably cleaner approach.