Re #7843. Allow AlgorithmRunner to have a parent set.

This follows Qt conventions.
Re #7843. Existing uses of AlgorithmRunner were leaked.
Re #7843. Make variable names more general.
Re #7843. Fix a memory leak.
Re #7843. Disconnect observers if cancelling or deleting.

Because very bad things happen if the handlers are called after the
object they live in has been deleted!
Re #7843. Run file and live data loading algorithms asynchronously.

Using the AlgorithmRunner class.
Re #7843. Cancel any already-running alg if a new one is started.

This avoid the temporal coupling where a user needs to know that they
ought to call cancel before starting off an algorithm.
Re #7843. Run StartLiveData asynchronously when start is pressed.

The StepScan algorithm itself is fast so there's no real need to make
that asynchronous. The other changes are mainly to trap or avoid
possible error conditions.
Merge remote-tracking branch 'origin/feature/7843_stepscan_async_alg_running'