Add option to stop swallowing errors on callbacks.

Seconds take of #14488 .

After the transaction refactor, we can cleanly apply this patch, as we have a better control of the stack of transactions, and we know that even when raising errors, the transaction wont leaky into the stack.

### Description
Add option to stop swallowing standard errors on `after_commit` and `after_rollback`.
Currently the option will be +false+ and throw a warning untill set it to +true+.

Example:
```ruby
# For not swallow errors in after_commit/after_rollback callbacks.
config.active_record.errors_in_transactional_callbacks = true
```
The option should be removed in future versions of Rails, as the desired
behaviour is not to swallow exceptions.

[fixes #13460]

review @jonleighton @rafaelfranca @tenderlove @chancancode @senny
I found the logic here hard to follow. I think the issue is that the `rollback!`/`committed!` methods are doing two things which we wish to be able to separate:

1. run callbacks
2. change internal state of the object

Perhaps we could split out these things into separate methods? Then we could do the state-changing on each record before running any callbacks (perhaps). Or at least avoid the boolean (which makes it non-obvious what is going on).