Unboxed closures

A relatively complete description of by reference closures that aims to encompass entirety of current thinking, except for bound lifetimes.

cc @pcwalton
This reasoning is the opposite of the reasoning from the "Make by-reference closures the default." point from above:

> We felt this was inconsistent with the language as a whole, which tends to make "by value" the default

In both cases, there's tension between the assumed common case and the defaults elsewhere in the language. The most common case is assumed to be by-reference mutating closures. But everywhere else the language defaults to by-value and immutable. The RFC is siding with consistency in one case (by-value) but convenience in the other case (mutable). I'm not saying this is *necessarily* wrong, but I do think it deserves an explicit defense at least.

If we have the generic type-level closure sugar and also infer the implemented trait(s) from the bodies of closure literals, then going for consistency on both counts is not too painful, because the explicit (`&mut:`) annotation can be avoided on both the type- and value levels.