Allow for `Set` to have a type class constraint
This is mostly relevant for performance. We now have a `SortedList` model that allows for more efficient set operations. This also opens the door for a tree-based model or a FFI model via the Haskell `containers` library.