This is a good idea, hence why we're basically already doing this except we are peppering the code with callback lists, which is ugly implementation wise (the reason people make signals/pubsub libraries) but for the user the API is pretty decent.
Backwards compatibility could be insured by making _after_insert/_before_delete, etc. that would instead connect to the signal so that's not a big stopper, but it would fill our codebase with cruft for all the previous places where we had callback lists (although it would also clean a lot of repeated logic calling the callbacks).
I'm not sure if we want the DAL to be blinker dependent now that we made it framework agnostic,
I think signals would be very interesting from a plugin development perspective.
My problem with signals is that when they aren't used just by the users (I would consider the scheduler a user here) to extend web2py base functionality and they're used between parts of the code in the framework itself, that makes the code very hard to read and follow in my opinion.
I'm in favour as long as we agree to be very careful with this last caveat. I think it's worth considering some sort of backwards compatibility breakage if we go forward as this would imply a pretty big refactor but I don't know how to do that without alienating our users.