ENH: speedup geometry_area_weights

In its current implementation, `geometry_area_weights` is painfully slow for my use case (global cube at 1/16° resolution, millions of small polygons to process).  This is because in line 85, the function iterates over the cube' full horizontal grid.

I started to implement an enhancement, which checks the bounding box of the geometry, makes a temporary extraction of the relevant part of the cube, iterates over all cube points within the bounding box, and in the end pads the `weights` array with zeros.

For a rather small polygon (touching 9 grid cells) on a 58x70 array, the computation time is enhanced by almost two orders of magnitude:

    In [7]: %timeit geometry_area_weights(CC, pix)  # my enhancement
    100 loops, best of 3: 6.83 ms per loop
    
    In [8]: %timeit geometry_area_weights(CC, pix)  # original code
    1 loops, best of 3: 442 ms per loop