Move BuildCancellationToken to :core to make it available during the build.
Move cancellation token to task graph execution.
Do not run any new tasks when a build is cancelled.

Basic tests added.