Draft: refactor Vec to BTreeSet in Sdr
For funsies (because playing with sets and iterators is a lark), I thought I'd investigate how the ergonomics change when using HashSet as a backing store for Sdr. That falls flat on its face thanks to #[derive(Hash)] and fn splunion() expecting deterministic order, but BTreeSet seems to get the job done. The resulting code is definitely more succinct and does pass tests, but I haven't done any more exhaustive testing than that. I also can't speak to how performance or memory use compares with real-world use cases.