Bounds.intersection should keep projection
Guard TileCursor against empty bounds.  Add getEmpty() method to check if it covers no tiles
When empty TileCursor will return a blank raster.  ImageTileLayer should handle this gracefully
The TileGenerator can now generate tiles that intersect a bounds