Referencing a global is assumed to have side effects.

Close #550
Document `keep_fargs`.  Close #557
Merged from upstream