app: add gimp_projection_stop_rendering()

which stops a running chunk renderer and moves its remaining
unrendered region back to the projection's dirty region.
app: implement progress canceling in GimpTool

In gimp_tool_progress_start(), if the progress is cancelable, grab on
an invisible widget and emit the progress' "cancel" signal when Escape
is pressed.
app: make gimp_gegl_apply_cached_operation() cancelable via GimpProgress

In gimp_drawable_merge_filter(), use that feature to make filter
applying cancelable. Stop projection rendering first, because we have
to run the event loop manually in order to receive input for
canceling, but we don't want the projection to be constructed from
that manual loop running.