- moves C++17 iterator_traits
- adds iterator_traits specialisation that supports all expected member aliases except for pointer
- adds iterator_traits specialisations for iterators that meet the legacy iterator requirements but might lack multiple member aliases
- makes pointer iterator_traits specialisation require objects
Depends on D99854.
Does this hunk affect the synopsis?