Fix Array#sample when pass count argument
Add Array#sample randomness specs
Remove Array#sample specs with high failury probability
Decrease failure probability for Array#sample randomness spec
Cleanup Bignum handling regarding string handling

This had duplicate logic, but Integer also already has string handling.
We want to have a single place for an optimized version of turning a
string into a bignum, so this ensures we have one place to do it.
Fix memory usage for turning long strings into bignums

This was caused because relocation of managed mp_int storage means a new
ByteArray is allocated. Because there was no opportunity for doing a GC
during the loop, it would keep growing in memory usage.

By reusing the same non managed mp_int, this memory usage is greatly
lowered. It means less allocations and reallocations, leading to stable
memory usage.
Added specs for String#to_i with bases.
Moved some functions to libtommath.
Improved parsing String to Bignum.
Added simple String#to_i with Bignum benchmark.
Simplified integer parsing.
Added more Integer() specs.
Fixed parsing integers.
Mark self as on stack in transcoding handling
Move type checking up in transcoder logic

This ensures we don't create invalid C structures because parts have
been allocated while others have not. This would cause segfaults if
someone manages to get the encoding setup in an invalid state.
Add specs for rb_intern_str to C-API
Implement rb_intern_str in C-API
Remove unneccesary FFI definition
Add rb_int_positive_pow needed for latest Ruby parser
Make sure to mark self on stack since it's used for comparison