More graceful handling of windows.

Intent is to return no data when the window is beyond the dataset's
extent and clip to the dataset's extent when the window overflows.
In other words, just like Python slices and Numpy extended slices.

Closes #191.
Better test of read windowing and a fix.
Merge pull request #208 from mapbox/issue191

More graceful handling of windows.