Stop swallowing errors on transaction after callbacks.

### Problem
When raising a standard error on `after_commit` /  `after_rollback`, they are logged but swallowed afterwards. IMO, this is dangerous behaviour as people can just ignore the logs and never see those errors.

### Solution
After re-work of the transaction model on rails 4+ this change is a trivial change. We just need to make sure we dont rollback the transaction after its is completed.

### Drawbacks
When people upgrade rails to use the version with this commit(probably 4.2), they will probably start seeing lots of errors on tests, as before they were probably being swallowed, TBH I see this more as a advantage than a drawback.
Apps that use `after_commit` and need to ensure its behaviour even if the others records after_commits fail, could find trouble with this new behaviour. If thats a concern, we could add a new after_commit DSL, `after_commit(:ensure)` maybe.

[fixes #13460]

Would like to get most feedback as possible on this, as this changes rails behaviour.
review @rafaelfranca @tenderlove @dhh @chancancode @senny
cc @vipulnsward @fw42
I don't think we should suppress the error until we've iterated each record. I think it's perfectly acceptable to just raise the first error that occurs, potentially stopping future callbacks. Doing so makes the flow of things clearer from the end-users perspective, and it would make this code simpler as well.