Separate allow_gc flag for scan

This add a separately configurable flag to enable/disable allow_gc
I think it should be 

allow_gc = config.allow_gc and not node.op.info['allow_gc']

otherwise, we will call free when this is not needed (both allow_gc and scan.allow_gc=True). Explain in a comment.