Rewrite threading infrastructure, introducing `Thunk` to represent
boxed `FnOnce` closures.
Purge the hack that allows `FnOnce` to be used with a by-value self method.  Besides being yucky, it will cause problems if we try to make all traits implement themselves, which would make a lot of things in life easier. Also, it was inextricably linked to `Box`, which was not the intention.  We can work around its absence, so better to reimplement it later in a more thorough fashion.
Adjust feature gates to allow for parenthetical notation to be used
with the fn traits
Remove `proc` types/expressions from the parser, compiler, and
language. Recommend `move||` instead.
Patch rustdoc to include missing types, make the match exhaustive
to prevent such oversights in the future.
Rewrite WorkItem not to use `proc()`.
Mostly rote conversion of `proc()` to `move||` (and occasionally `Thunk::new`)
Delete tests that are either no longer relevant or which have
duplicate tests around object types.
Update guide/intro to take into account the removal of `proc`.

cc @steveklabnick
Update emacs and vi modes.
FIXME(#19356) -- Comment out debuginfo test that doesn't work and I don't know why
Add some tests for obsolete code, sugar used in appropriate ways.