Conservative gc registration

I've gone through and removed a number of superfluous registrations completely, and I've marked a large number of others with `NM_CONSERVATIVE`, which denotes that it's a registration for which I'm not completely sure whether it needs to be there or not.  This will cause the preprocessor to remove these statements completely unless `NM_GC_CONSERVATIVE` is defined when compiling.

Also fixed a bug where the temporary results in recursive list storage operations were not being registered correctly, which could have led to invalid reads during GC marking.