image filtering (e.g. dropshadow) for agg backend

Hi,

Attached is a patch to support some primitive image filtering (e.g.,
gaussian blur) for agg backend.
The idea is similar to how rasterization is done.
Instead of plotting the rasterized image on the vector backend, it
plots the image (after filtering) on the same agg backend.

The demo image is attached.
It is simple image processing filter and only available for agg
backend. However, you can use this by rasterization (pdf, svg, ps).
For example, saving the demo as pdf works, except the misaligned texts.

Although this is only for the agg backend, I guess this is rather
useful and want to push into the trunk.
The big question is its api. Right now, its api is mostly similar to
rasterization api and it utilizes the "allow_rasterization" decorator.
I think one of the key thing to be considered is how filtering in
other back ends will be implemented (if they are going to).
Right now, the filtering is done by simple function that does some
array arithmetic, but different back end will require different
functions.
Maybe, we need some filter classes which implements filtering function
for each backends.

So, it would be great if others test the patch and give some feedback.
Regards,

-JJ

ps. somehow the filter is not applied if lines are drawn with markers
which is very weird.

agg_filter.diff (10.8 KB)

demo_agg_filter.png