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
I've been starting to pull these into separate files as I've been touching them. Can you pull these new tests, and the existing tests for `Type::BigDecimal` out into `test/cases/type/decimal_test.rb`?