Fix .to_money not keeping full precision when using Money.infinite_precision = true

I ran into a problem using `.to_money` in conjunction with `infinite_precision`:

```ruby
[5] pry(main)> Money.infinite_precision = true
=> true
[6] pry(main)> 100.009.to_money
=> #<Money fractional:0.10001E5 currency:USD>
[7] pry(main)> Money.new(10000.9)
=> #<Money fractional:0.100009E5 currency:USD>
```

This PR fixes this problem, and adds test for it!