Added `InsertFailed`, `UpdateFailed`, and `DeleteFailed` events. Currently just `DbUpdateException` and `DbEntityValidationException` are caught. `*Failed` events are fired for the `ITriggerable`s relevant to the caught exceptions.

Also did a bit of cleaning up the shared behaviour between the extending classes and the interfaces + extensions methods. More to do on that, but at least now they share some interfaces.