Fixed a bug where AR::RecordNotSaved & RecordNotDestroyed lost error message

Since 3e30c5d4222f816cdffd5241d56ef9442f6d1903, these exceptions started
ignoring error messages. This commit changes the behavior of #initialize
so that these exceptions no longer lose the given message.

Also, when calling `AR::Base.save!` or `AR::Base.destroy!` and raising
one of the exceptions, give a meaningful error message so that people
can easily understand why it's failing to save/destroy.