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, True)
    100 loops, best of 3: 6.83 ms per loop
    
    In [8]: %timeit geometry_area_weights(CC, pix, False)
    1 loops, best of 3: 442 ms per loop

I wanted to first have the possibility to quickly change between the old and new behaviour, which is why I (temporarily) introduced the `reduced` argument, which I'll remove again.  Also, before tidying this up, I wanted to present it to you guys to get your opinion.

This PR is not finished yet; I still need to do the following:

* write tests for corner cases where the polygon crosses the cube's boundary
* remove the `reduced` arg again, and merge the code into the main function body.
* you name it ...