I discovered that the only way to support `yield` it is to compile the callbacks into strings and eval them. That's what ActiveSupport < 4.1 does.

Interestingly, 4.1 is ditching the ability to `yield` entirely. This implementation is loosely based on 4.1's. It's simpler and less meta, but the callstack is deeper and you can't `yield`. If it's important to us, there's no reason we couldn't go back and implement AS 4.0's version, but these differences are why I was hesitant to use `ActiveSupport::Callbacks` in the first place. They're a moving target.