cpp/ranges/join with view/iterator/iterator

Construct an iterator.

@1@ Default constructor. Value-initializes the underlying iterator to and the iterator to, and initializes the pointer to parent  with. @2@ Conversion from to. Move constructs corresponding members.

This iterator also has a private constructor which is used by join_with_view and join_with_view. This constructor is not accessible to users.