Improve size-in-bytes parser's use of BigInteger/BigDecimal

 - use bitLength to see if we overflow Long
 - use BigInteger and BigDecimal to parse, instead of parseLong/parseDouble