add region.swap to 1.8

Pulled region.swap from #801 so that we can merge into v1.8

ping @jmeas