Correct range for extent and resolution

Tile ranges are inclusive.  When getting the tile range for an extent, the top-right corner of the extent should be considered with a different intersection policy than the bottom-left corner.
Sharing code with rectangle

We cannot use the rectangle constructor here because a rectangle makes an assertion about min being less than max and a range may have equal min/max.