VM: change the BIGNUM_TO_POINTER macro so that it automatically sees through tagged pointers
VM: the copy assignment operator is overloaded so you need a custom swap
VM: a lot of methods in bignum.cpp converted to use data_roots instead of gc_bignums