Use SortedList as ProvinceCollection

- SortedList has everything that there was hand optimization for
- Has O(1) insertion at the end
- Has O(1) lookup when retrieving provinces with .Values