Implement the intIfDifferentFromNativeInt builder with BigInt

* Using conversion to string as this is only used on 32-bit systems in
  Time.time and adding a int64_t BigInt constructor makes a much bigger change
Fix SmallInt overflow conditions in bootunpickler and Float.toInt

* These were returning BigInt in the range of SmallInt.
Use a more common way to make a RichNode from a UnstableNode