Preserve the region order when flushing a RegionSet

Related to limetext/lime#341.
Ah got it. That would be nicer.

I think you're right, so you'd end up with something like:

```
    for i := 0; i < len(r.regions); i++ {
        for j := i + 1; j < len(r.regions); {
            if r.regions[i] == r.regions[j] || r.regions[i].Intersects(r.regions[j]) || r.regions[j].Covers(r.regions[i]) {
                // Do merge
                j = i + 1
            } else {
                j++
            }
        }
    }
```