Dispatching can be cancelled via preDispatchSignal().

Slots should have the signature `bool slot( dispatcher, nodes )`, and may return True to cancel execution, or False to allow it to continue.

Fixes #929.
Changed preDispatchSignal to a CancellableDispatchSignal.

Rebase this commit into the previous one, or remove it altogether, pending John's answers.