New plugin interface: IResourceModification

This adds a new plugin interface ``IResourceModification`` which allows extensions to tap into resource modifications at the three major points (creation, update, deletion). In each case extensions can add pre-, and post-processing for these entry points.

This builds upon @seanh's ``IResourceUpload`` interface which kind of did the right thing, but in a smaller and more focussed setting, so it expanded on it and in the end consumed it in the new interface so that almost nothing remains of @seanh's work (sorry @seanh).

This new plugin interface can replace the current ``IResourceUrlChange`` but I leave it be since I feel there are others than me who should make the decision whether it can and should be deprecated.
I personally think that it's good that all extension points have the same parameters signature, ie `before_update(context, data_dict)`, with the parameters you added being keys of `data_dict`. This makes easier eg to add new ones. Other devs might be happy with that, so I'll raise it on the dev meeting today to see what's the general feeling.