toolchain: use task data for search state
Things get extra complicated when what could be the task data is the top level structure for the task. This simplifies the code a bit as well as the allocation digraph. The task now owns the task state, and we pass the task around instead.
Showing with 52 additions and 78 deletions