Data roots refactor, aiming to get rid of gc_bignum

The gc_bignum class seem so unnecessary. Why can't bignum objects be stored in the normal data_roots vector? I've been trying to figure that out and also trying to simplify some of the more complicated pointer juggling code... Please tell me what you think. The commits below doesn't appear to cause any crashes (test-all passes through) but it's hard to know for sure.