rationals: make conversion from float to rational exact.

This is a fairly major change, but it's in line with the recent
change to make comparisons of floats and rationals strict [#3102].
There is still some work to be done, namely:

  - handle large values correctly
  - rational-float inequalities
Merge branch 'master' of github.com:JuliaLang/julia