[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)
- [ ] `collections::bit::TwoBitPositions` (field)
- [ ] `collections::vec::Vec` (method)
- [ ] `collections::tree::TreeMap` (method)
- [ ] ???

This is blocked on #19449, which needs to get snapshot-ed before this can land.

cc @aturon 
Should this still have `'r` as a lifetime parameter?