[WIP] Unbox all the closures

Very early WIP branch that attempts to move all our uses of boxed closures to the new "unboxed" closures. I'll update this branch every time I reach a "milestone". By milestone, I mean that this branch passes `make check` after "unboxing" the fields/methods of a struct/trait/module. See list of milestones below:

- [x] `core::option::Option` (methods)
- [x] `core::result::Result` (methods)
- [x] `core::iter::Map` (field)
- [x] `core::iter::Filter` (field)
- [x] `core::iter::FilterMap` (field)
- [x] `core::iter::SkipWhile` (field)
- [x] `core::iter::TakeWhile` (field)
- [x] `core::iter::Scan` (field)
- [x] `core::iter::FlatMap` (field)
- [x] `core::iter::Inspect` (field)
- [x] `core::iter::Unfold` (field)
- [x] `core::iter::IteratorExt` (methods)
- [x] `core::iter::ExactSizeIterator` (methods)
- [x] `core::slice::CharEq` (`impl CharEq for F where F: FnMut(char) -> bool`)
- [x] `core::slice::Splits` (field)
- [x] `core::slice::MutSplits` (field)
- [x] `core::slice::SlicePrelude` (methods)
- [x] `core::finally` (functions, `Finallyalizer`)
- [x] `core::fmt::Formatter` (methods)
- [x] `core::char` (functions)
- [x] `collections::tree::map::TreeMap` (method)
- ~~`collections::trie::map|set::TrieMap|Set` (method)~~ Postponed until #19596 gets solved
- [x] `collections::bit::Bitv` (method)
- [x] `collections::vec::Vec` (method)
- [x] `collections::dlist::DList` (method)
- [x] `collections::slice::[Clone]SliceAllocPrelude` (method)
- [x] `collections::vec_map::VecMap` (method)
- [x] `serialize::{Decoder,Encoder}` (method)

Crate passes:

- ~~liballoc~~
- [x] libarena
- ~~libbacktrace~~
- [x] libcollections (only `TrieMap|Set` left)
- ~~libcore~~
- ~~libcoretest~~
- ~~libflate~~
- ~~libfmt_macros~~
- ~~libgetopts~~
- ~~libgraphviz~~
- ~~liblibc~~
- ~~liblog~~
- ~~librand~~
- [x] librbml
- [x] libregex
- [x] libregex_macros
- [ ] librustc
- [ ] librustc_back
- [ ] librustc_llvm
- [ ] librustc_trans
- [ ] librustdoc
- [x] librustrt (ignoring `unwind::try` since it relies on transmuting a boxed
  closure)
- [x] libserialize
- [x] libstd
- [ ] libsyntax
- ~~libterm~~
- [ ] libtest
- ~~libtime~~
- ~~libunicode~~ deferred, there seems to be some bug in which the unboxed
  closure borrows the upvars for longer that its lifetime/scope/existence. Need
  to investigate.

cc @aturon

Not really :-)

In fact, we don't currently have a way to settle on these kinds of conventions -- the ones in the Guidelines retain a very informal status and haven't gone through an RFC.

FWIW, I *personally* prefer @japaric's style here. But ultimately, we're going to need to sit down and design a full style guide -- probably between a release candidate and the 1.0 final.