CancelToken created for each install/remove batch.
Download still needs to be made async, but it does cancel the download as long as
some data is received.
CancelToken passed to each step - steps should now check / wait for cancel token to be triggered,
and cancel their actions (with STEPSTATUS_FAIL) if the cancellation token is triggered