Fix rational to decimal on type_cast_from_user

We ran into a problem with Rationals and the `Decimal#cast_value` method. 
For a `Rational` type, use a precision or fallback to default `BigDecimal.new(value, 0)`

@Overbryd and @marianovalles
> About your plans to remove `limit` and `precision` how would you handle rationals?

Probably by not having the type care about the precision of the field, but that would break the contract of `model.attr == model.reload.attr`, so I suppose the answer would have to be that we don't handle rationals in this type. I'd personally be ok with that answer, since mixing floats & rationals can get hairy, and shouldn't be encouraged. That said, I think I'd be in the minority there.