Fixed a bug where AR::RecordNotSaved loses the given error message

This was extracted from #17806 that had an improvement and a bug fix. This is the bug fix.

Since 3e30c5d, `AR::RecordNotSaved` started ignoring the given error message. This commit changes `AR::RecordNotSaved#initialize` to not ignore the given error message.

Doing `create_or_update || raise(RecordNotSaved.new(nil, self))` in `ActiveRecord::Persistence` looks weird, but I'll send another pull request to improve it as soon as this one is merged.

cc @arthurnn
It turns out that there are several questions around whether or not we should always include `record`:

  * Sometimes, [`AR::RecordNotSaved` is raised before initializing an AR object](https://github.com/rails/rails/blob/dd986814e7f528916a44f841a02c955a4522307c/activerecord/lib/active_record/associations/collection_association.rb#L481-L483). Do we need to initialize and pass `record` even in such a case?
  * [`record` could be plural if it's raised from `collection_association.rb`](https://github.com/rails/rails/blob/dd986814e7f528916a44f841a02c955a4522307c/activerecord/lib/active_record/associations/collection_association.rb#L533-L540). Is it ok for `record` to be plural  at times? Also, do we want to include all the target records or only unsaved records?

I guess we should focus on a bug fix in this pull request as @arthurnn suggested earlier, and we can discuss the questions above after that.

@arthurnn @rafaelfranca what do you think?