compiler: Fix double GC rooting in (map)

- Properly scope the temporary result vector's GC root so it's not live
  when createProperList() attempts to GC root it again

- Add documentation to CellRefRangeList indicating that double GC
  rooting is disallowed

- In debug builds ensure that any added cell range does not overlap with
  existing ranges

- Add a list permutation functional test that crashes without this fix