Unboxed closures

A relatively complete description of by reference closures that aims to encompass entirety of current thinking, except for bound lifetimes.

cc @pcwalton
There's no inherent reason we can't make by-value `self` work with `Box<Trait>`. It just needs to generate a wrapper function for the vtable.