support for numbers up to 9 QUADRILLION!

Turns out, javascript numbers can accurately represent integers up to 2^53 (a little over 9 quadrillion)

(by accurately, I mean: `Math.pow(2, 53) !== Math.pow(2, 53) - 1`)

After that, you loose precision for integers. `decode` already has a check for large integers, I only had to add a bit to use `/ 128` instead of `>>> 7` when the integer is > an `int`

(note there is a distinction between `int` (a 32 bit number) and a `integer` (a 53 bit integer))