[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)
- [ ] ???

This is blocked on #19449, which needs to get snapshot-ed before this can land.

cc @aturon 
Stylistically I've personally been pushing towards something like:

```
fn foo(...)
       where ... {
}
```

I think this came up on a previous PR though, @aturon do you know if we've settled on a convention for this just yet?