Fix error raised when assigning NaN to an integer column

This makes integer casting cover any non-castable case by returning `nil`, which is in-line with the intention of the former implementation in 3525a9b5, but covers the odd cases which respond to `to_i` but raise an error when it's called, such as `NaN`, `Infinity` and `-Infinity`. 

Those are the only ones I know of, but it's possible other objects could raise errors on `to_i`, which is the reason for the generic rescue. (Note that this generic rescue was also the behavior pre-3.2.8, except that the value was interpreted as a boolean instead—fixed in 96a13fc7—after this pull it will be more correctly and consistently interpreted as `nil`).

Fixes #8757 (see that issue for full description)