Change Number to Scientific

* This changes use of the `Number` type to [Scientific](http://hackage.haskell.org/package/scientific-0.0.0.0/docs/Data-Scientific.html) which is an arbitrary-precision floating-point number type that is fast to parse and fast to convert into `Fractional` types like `Double`.

* I also DEPRECATE the `withNumber` function in favor of the new `withScientific`.

* Note that this pull request includes a commit which changes the encoding of `Rational` to an object so that it can use full precision which I think is the correct way to encode rationals.

* This pull request depends on a similar pull request in attoparsec: https://github.com/bos/attoparsec/pull/51

Let me know if these changes make sense or not.