This patch adds a simple const_iterator implementation for SmallSet by
delegating to either a SmallVector::const_iterator or
std::set::const_iterator, depending on which storage is used by the
SmallSet.
The motivation for adding this is D46827, where it is helpful to iterate
over a SmallSet.
Any chance using iterator_facade (in include/llvm/ADT/iterator.h) would help simplify this implementation?