An arbitrary-precision Decimal type for JavaScript