Nameable fn types and user-defined traits

That usecase will be possible with TAIT (and is relatively low overhead today by just storing a Map<SomeIterator, fn(...) -> _>, a single function pointer is pretty small compared to a lot of other iterator state).