Add a separate allow_gc flag for the Scans.
Fix typos in comment.
Fix the code written while way too tired.
Add way to specify the allow_gc flags on individual scan instances.
Propagate the allow_gc flag in scan optimizations.

I hope I got all the spots. This is insane.
Forgot grad and R_op for allow_gc.
Of course you also need to modify the *other* scan.
Don't call self.fn.free() unnecessarily.
Merge pull request #2336 from abergeron/scan_allow_gc

Separate allow_gc flag for scan