Add task cancellation hooks into the build definition.

This enables configurable strategies for non-CLI clients to register for all task evaluations.

* Mini TaskCancel library
* Deprecate existing EvaluateConfig case class in favor of EvaluateTaskConfig trait (which is
  easier to evolve in BC way)
* Move all methods taking EvaluateConfig into methods taking EvaluateTaskConfig.
* Add hooks in build for cancel handlers
* Expose hooks in Signal library for non-ARM usage


Review by @eed3si9n & @havocp cc @skyluc