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.
Isn't ```toSource``` a weird requirement? When I browsed through it the first time, I couldn't figure out why I was getting type errors.