Unboxed closures

A relatively complete description of by reference closures that aims to encompass entirety of current thinking, except for bound lifetimes.

cc @pcwalton
If it is `self`, which I believe it should be, it will be impossible to use `FnOnce` boxed, because trait objects cannot use self-by-value.