Cancel modules when preprocessors are canceled

If the preprocessor of a module was canceled, it was not causing the
module itself to be canceled. For example, if the file chooser dialog
was canceled during OpenImage execution, the OpenImage module was not
actually marked as canceled.

Now, if a preprocessor is canceled, we cancel the whole module. This
should allow appropriate response to preprocessor cancelation.
Merge branch 'cancel-modules'

Improves ModuleRunner cancelation so that Modules are canceled when their
preprocessors are canceled.