Topic/upgrades

I suspect this caused some performance regressions, especially in Blaze.  I'm concerned about correctness first, and reoptimization second.

I'm not sure that this is correct, especially with regard to `killBy` replacements, but all the tests pass.
It's because constant is no longer constrained to Task.  Without thinking too deeply about it, I would have expected Task to be inferred from the channel, but apparently I need to think deeper.