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.