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 think this places too much burden on people who may never use `after_commit` and `after_rollback` callbacks. I think we should instead show this deprecation when `after_commit`/`after_rollback` callbacks are declared.

Also, I think we should move towards not having this option at all: we should eventually always just raise. If people want to suppress certain exceptions then they can do that in their callbacks without complicating AR's own functionality.

Therefore I think the config option should indicate this: in the next version the the default will be `:raise` and setting `:log` will have no effect. And setting `:log` in this version should continue to show a deprecation warning along the lines of: "the `:log` behaviour is deprecated and you should migrate to `:raise`".