Remove #fail_with; it's better to return false instead of explicitly exiting.
Insert a method under Dep#process for non-top-level work.

This work was being done by #process_with_caching but that wasn't quite the right place for it, and there will soon be a bit more to do.
Make the dep callstack in the top-level dep and pass it down, instead of coupling to Task.
Hack: access the topmost dep for logging on interrupt via task for now.
Store the dep cache like the callstack instead of passing it around.
Merge branch 'callstack'
Bracket consistently in dep.rb.