Allow run_after_commit to be called from an observer

This change makes the run_after_commit public, and evaluates the block in the context of the model instance so that this works.

I've added a test to the dummy app as well.