Migrate ITreeRegion table to have one row per region

* Before the data migration, each i-Tree region had many rows in the ITreeRegion table. Each row's multipolygon contained one polygon.
* After the data migration, each i-Tree region has one row in the ITreeRegion table. Each row's multipolygon contains many polygons.

Also:
* We now declare that i-Tree region codes must be unique in the ITreeRegion table
* For me, running the data migration causes some "Message too long" errors to be printed, apparently harmless.
* Timing eco benefits computation on 28000 trees in a Philly-area treemap, this change made no appreciable difference.

Finally, this cleans up problems with unit tests and the ITreeRegion table:
* Some tests assumed the table was empty -- fixed to work with a populated table
* Some tests truncated the table -- fixed to not disturb it

Common strategy -- instead of creating a fake region surrounding a particular point, use an existing region and get a point in it using geometry.point_on_surface