Use sets for widening thresholds instead of lists
When widening thresholds are collected from the program, we do use a Set to avoid duplicates, but then it's just converted to a list with elements:
https://github.com/goblint/analyzer/blob/bb6f9aa1a2a4f38d022112e1ab840a4bdb382286/src/cdomain/value/util/wideningThresholds.ml#L103-L108
Later, IntDomain uses this list by linearly searching for the next threshold x for u:
https://github.com/goblint/analyzer/blob/bb6f9aa1a2a4f38d022112e1ab840a4bdb382286/src/cdomain/value/cdomains/intDomain.ml#L563-L568
This linear search is $$O(n)$$ while the same lookup in binary search trees would be $$O(\log n)$$. And actually Set.Make.find_first_opt from the OCaml standard library can be used exactly for this purpose (because that's what Sets are internally).
So we could avoid the intermediate lists and do the more efficient search on sets directly. Although I doubt it will make a notable difference to Goblint performance as a whole.