Changed how cancelation is done

It is now done by calling cancel() method directly on
the action objects. Unfortunately this means that the
objects are no longer const when execute(...) is
called.