Unboxed closures

A relatively complete description of by reference closures that aims to encompass entirety of current thinking, except for bound lifetimes.

cc @pcwalton
byval closures are not an opaque type, only byref closures are and admit vtables (not that byval/byref is the best distinction here).
@thestinger is only correct for `*Trait` (all the smart pointers, including `Box`), not `&Trait` or `&mut Trait`, which I'm referring to.