Replace num_bigint with malachite
[malachite](https://www.malachite.rs/) is an arbitrary precision crate that unlike num_bigint implement as small integer optimization. This avoids allocating a `Vec` for every single number parse and instead only allocates for rare unusually large numbers.
This is also a correctness improvement since we'd previously just ignore the higher parts of unreasonably large numbers.
The disadvantage is that malachite is slow to compile.