Specs for coercing BasicObject to Rational.
Guard for coercing BasicObject to Rational
Moved BasicObject guard to Rational.convert.
Extra BasicObject guard for Rational.

Rational's second argument requires an extra guard in case BasicObject is used.
While this is a rare case MRI raises a specific error in this case. The actual
error message ("not an integer") is rather useless so we're using a (hopefully)
slightly more useful one.