Should `original_method` be memoized?  It is called multiple times and I suspect that could improve perf a bit.  That said, that may introduce bugs related to methods being defined on the fly (as rails used to do for it's dynamic finders, where `method_missing` would define the method for future use).

At the very least, if we're not going to memoize `original_method`, I think it would be good for `when_defined` to not call `original_method` multiple times; instead it's implementation could be:

``` ruby
def when_defined
  original = self.original_method
  yield original if original
end
```