Some more fixes and cleanup

Changes in this PR:

  * fix 0 handling in JsonDecimal,
  * adds some docs and code re-org,
  * renames to the 'to*' methods to `truncateTo*` and adds version for Byte and BigInt,
  * renames 'safe*' to `to*` and adds version for Byte, Short, and BigInt, and
  * makes `asJsonDecimal` private since it was unsafe in lie of NaN/Infinities.