Preserve the region order when flushing a RegionSet

Related to limetext/lime#341.
Yes, my point was that this is equivalent:

```go
	changed := true
	for changed {
		changed = false
		for {
			for {
				if r.regions[i] == r.regions[j] || r.regions[i].Intersects(r.regions[j]) || r.regions[j].Covers(r.regions[i]) {
					changed = true
				}
			}
		}
	}
```

But now that I'm thinking about it, the outer loop could be removed entirely if you in the "merge" if case just set j to i+1 again, right?

My thinking, which might be wrong, is this: