Trait to represent types that can be created by multiplying elements of an iterator.
This trait is used to implement the
product() method on iterators. Types
which implement the trait can be generated by the
product() method. Like
FromIterator this trait should rarely be called directly and instead
interacted with through
Method which takes an iterator and generates
Self from the elements by
multiplying the items.