More number work

* Specialize JNumber for Java's BigInteger and BigDecimal
* Use the Java BD for hashcode/equals (because there are cases where
   Scala's will throw)
* Check that a number can actually be put in a BigDecimal when
   deserializing
Allow buffering when constructing a JsonReader from a Reader