^^^^^^^^^^^^^^^^^^^^^^^^^^
- minor speedup for ``next(merge)``.
- removed **unused** ``key`` parameter from ``combinations_from_relations``.
- replaced ``Iterable.as_string`` parameter ``seperaror`` (sic!) by
``seperator``.
- included signature for ``__reduce__``, ``__setstate__`` and
``__length_hint__`` methods.
- fixed ``Seen.contains_add`` method signature.
- fixed potential segfault in ``ItemIdxKey.__repr__``.
- removed unnecessary ``__setstate__`` method for ``ItemIdxKey``.
- various ``__setstate__`` and ``__reduce__`` methods were changed so they
can't used to cause segmentation faults, ``SystemError`` or blatantly wrong
behaviour. However, serializing or copying such an instance can significantly
slower as a result of this change. Unpickling these instances from previous
versions could be impossible and ``copy.copy`` is **not** supported (and
probably won't be ever because ``itertools.tee`` interacts with ``__copy__``
methods). Affected iterators: ``chained``, ``deepflatten``, ``duplicates``,
``grouper``, ``intersperse``, ``merge``, ``roundrobin``, ``sideeffects``,
``split``, ``successive``, ``unique_everseen``, ``unique_justseen``.
- added ``__repr__`` method for ``chained``, ``complement``, ``constant``,
``flip``, ``nth`` and ``packed``.
- fixed a bug with ``partial`` when the function kept the arguments and a call
only provided exactly the number of arguments as there are placeholders in
the partial.
- Applying ``flip`` on another ``flip`` instance now simply returns the
original function.
- ``chained`` now unwraps (if possible) other ``chained`` instances when
creating a new instance. This is only done if this **won't** change the
current behaviour.