gc.realloc: Improve case where old block attributes are preserved

Realloc zeros the new bits if realloc didn't expand in place AND if the block doesn't have ```NO_SCAN``` set.
Currently, if we're preserving the old block attributes (```bits``` is zero,) and the old block has ```NO_SCAN```, realloc will zero the new bytes regardless.

I caught this as part of my SENTINEL gc code review.
I don't know if its really worth fixing.