Closures that can return references to captured variables

For Fn{Mut|Once} specifically, it wouldn't be (stable[1]) breaking, because it's currently impossible to implement or otherwise name the trait(s) except through the Fn(Args...) -> Output form. Adding the GAT would thus be compatible, so long as the existing Fn() alias continues meaning Output is independent from call(&self)'s '_.

[1] of course, it'd be breaking for nightly-only implementers (but we don't care about that, because nightly opts out of stability) unless we added a rule that you can implement a GAT without the lifetime generic, and it just accepts and ignores that input lifetime. Underspecified, but I think possible, somewhat realistic given other lifetime inference rules, and potentially desirable if it allows us to reuse existing traits for the lending versions.