A SmallSet is an unordered set of elements. It is designed to work best
for very small sets (no more than ten or so elements). In order to support
small sets very efficiently, it stores elements in a simple unordered array.
When the set is smaller than the size of the array A, all elements are
stored inline, without heap allocation. This is accomplished by using a
smallvec::SmallVec.